linux中sh指令碼的寫法

2021-09-29 02:16:49 字數 925 閱讀 3902

先介紹遇到的問題

遇到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 當...