Linux指令碼裡使用未知引數設定變數名

2021-07-29 17:17:45 字數 2080 閱讀 7166

在指令碼裡使用位置引數設定變數名,在終端命令列輸入實際變數名,可以靈活的更改

先建立2個檔案:

[admin@localhost

linux]$ vim m1.c

[admin@localhost

linux]$ vim m2.c

[admin@localhost

linux]$ cat m1.c

echo "you are a girl"

[admin@localhost

linux]$ cat m2.c

echo "you are a boy"

此時再建立乙個指令碼s.bat

[admin@localhost

linux]$ vim s.bat

[admin@localhost

linux]$ cat s.bat

cat $1

$2 >$3

[admin@localhost

linux]$ bash s.bat m1.c m2.c m3.c

[admin@localhost

linux]$ cat m3.c

echo "you are a girl"

echo "you are a boy"

上述的操作等同於下面

[admin@localhost

linux]$ vim s.bat

[admin@localhost

linux]$ cat s.bat

set m1.c m2.c m3.c

cat $1

$2 >$3

[admin@localhost

linux]$ bash s.bat

[admin@localhost

linux]$ cat m3.c

echo "you are a girl"

echo "you are a boy"

採用這種操作是直接在指令碼裡將實際變數名給出在終端命令列不需要再給出實際變數名

如果在指令碼裡進行如下操作

[admin@localhost linux]$ cat s.bat

echo $1

$2$3

$4$5

$6shift

echo $1

$2$3

$4$5

$6shift

echo $1

$2$3

$4$5

$6shift

echo $1

$2$3

$4$5

$6shift

[admin@localhost linux]$ bash s.bat z x c v b n

z x c v b n

x c v b n

c v b n

v b n

在列印時這個shift所起到的作用就是每執行一次,未知引數向右移動乙個位置

[admin@localhost linux]$ vim s.bat

[admin@localhost linux]$ cat s.bat

echo $0

$1$2

$3$4

$5$6

shift

echo $0

$1$2

$3$4

$5$6

shift

echo $0

$1$2

$3$4

$5$6

shift

echo $0

$1$2

$3$4

$5$6

shift

[admin@localhost linux]$ bash s.bat z x c v b n m

s.bat z x c v b n

s.bat x c v b n m

s.bat c v b n m

s.bat v b n m

可以看出來echo $0處列印的並非z而是指令碼名並且,這個未知引數不做任何的偏移。

sed例子用法引數 shell指令碼裡常用舉例

一,用法 sed 選項 功能 檔名 路徑 選項 e 多項編輯,在使用多個sed命令時使用 n取消預設的輸出,使用安靜 silent 模式。在一般 sed 的用法中,所有來自stdin的資料一般都會被列出到螢幕上。但如果加上 n 引數後,則只有經過sed 特殊處理的那一行 或者動作 才會被列出來 f指...

linux指令碼 函式和引數

如何定義乙個引數?function fname statements 或者fname statemants 即可 執行函式 fname 執行函式 傳遞引數 fname arg1 arg2 傳遞引數 我們可以在函式中使用引數 fname echo 1 2 列印第乙個和第二個引數 echo 列印全部引數...

4 Linux小指令碼以及生成指令碼基本格式設定

1 統計出 etc passwd檔案中其預設shell為非 sbin nologin的使用者個數 並將使用者都顯示出來 root c76 cat etc passwd grep v sbin nologin awk f 顯示使用者 root c76 cat etc passwd grep v sbi...