先介紹遇到的問題
遇到shell問題:
1將變數中的內容輸入到某個檔案
date8=20181111
#錯誤方式,linux會認為date8是指令並且去執行,這時候會報20181111是不可識別的指令
#"$date8">>'bg_action_'$date'.txt'
#正確方式
echo "$date8">>'bg_action_'$date'.txt'
2按行讀取檔案,並且將讀取內容作為變數
#定義了變數n作為行數
n=1while ((n<=$(cat 'bg_action_'$date'.txt'|wc -l)))
doecho $n
#重點在這裡,需要對$n加上單引號,否則$n是無法識別的,而且$在sed指令有特指
date8=$(sed -n ''$n'p' a.txt)
((n+=1))
date8num=$(sed -n ''$n'p' a.txt)
done
還有一些特殊變數
變數 含義
$ 0 當前指令碼的檔名
$ n 傳遞給指令碼或函式的引數.n是乙個數字,表示第幾個引數。例如,第乙個引數是$ 1,第二個引數是$ 2。
$# 傳遞給指令碼或函式的引數個數。
$ * 傳遞給指令碼或函式的所有引數。
$ @ 傳遞給指令碼或函式的所有引數。被雙引號(「」)包含時,與$ *稍有不同,下面將會講到。
$? 上個命令的退出狀態,或函式的返回值。
$$ 當前shell程序id。對於shell指令碼,就是這些指令碼所在的程序id。
$ *和$ @的區別
$ *和$ @都表示傳遞給函式或指令碼的所有引數,不被雙引號(「」)包含時,都以「$ 1」「$ 2」......「$ n」的形式輸出所有引數。
Linux 指令碼 sh 和 的區別
如果.不在path裡面,要執行當前目錄下的可執行檔案,使用全路徑 executable filepath是環境變數,如果將當前目錄 新增到環境變數中,那麼也可以不用 直接輸入當前目錄下有可執行許可權的可執行檔案就可以執行了 如果要執行乙個sh指令碼,不管那個指令碼有沒有可執行許可權,都可以使用 sh...
linux開機自動執行 sh指令碼
bin sh chkconfig 2345 20 80 description server reboot.execute auto.sh client post port 80 redirect 9527 sudo iptables a prerouting t nat i eth0 p tcp ...
sh裡 時間格式的寫法
man date可以看到date的help檔案 date 獲取當前時間 date d 1week y m d 獲取上週日期 day,month,year,hour date date 24 hour y m d 同上 date now date s shell指令碼裡面賦給變數值 輸出 符號 a 當...