亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

shell腳本命令行參數傳遞問題

系統 1786 0

1.
?#-------------------------------------------------------------------------
?9 #? 強烈注意,在賦值的前后一定不要有空格
10 # 如果有空格會發生什么?
11?
12 #? 如果"VARIABLE =value",
13 #????????????? ^
14 #+ 腳本將嘗試運行一個"VARIABLE"的命令,帶著一個"=value"參數.
15?
16 #? 如果"VARIABLE= value",
17 #?????????????? ^
18 #+ script tries to run "value" command with
18 #+ 腳本將嘗試運行一個"value"的命令,帶著
19 #+ the environmental variable "VARIABLE" set to "".
19 #+ 一個被賦成""值的環境變量"VARIABLE".
20 #-------------------------------------------------------------------------

2.
################################Start Script#######################################
?1 #!/bin/bash
?2 #? "裸體"變量
?3?
?4 echo
?5?
?6 # 變量什么時候是"裸體"的,比如前邊少了$的時候.
?7 # 當它被賦值的時候,而不是被引用的時候.
?8?
?9 # 賦值
10 a=879
11 echo "The value of /"a/" is $a."
12?
13 # 使用let賦值
14 let a=16+5
15 echo "The value of /"a/" is now $a."
16?
17 echo
18?
19 # 在for循環中
20 echo -n "Values of /"a/" in the loop are: "
21 for a in 7 8 9 11
22 do
23?? echo -n "$a "
24 done
25?
26 echo
27 echo
28?
29 # 在read命令狀態中
30 echo -n "Enter /"a/" "
31 read a
32 echo "The value of /"a/" is now $a."
33?
34 echo
35?
36 exit 0
################################End Script#########################################

3.位置參數
就是從命令行中傳進來的參數,$0, $1, $2, $3...
$0就是腳本文件的名字,$1是第一個參數,$2為第2個...,參見[1](有$0的說明),$9
以后就需要打括號了,如${10},${11},${12}...

shift命令重新分配位置參數,其實就是向左移動一個位置.
$1 <--- $2, $2 <--- $3, $3 <--- $4, 等等.
老的$1將消失,但是$0(腳本名)是不會改變的.如果你使用了大量的位置參數,那么
shift命令允許你存取超過10個參數.雖然{}表示法也允許這樣.

例:
#!/bin/sh?
# we have less than 3 arguments. Print the help text:?
if [ $# -lt 3 ] ; then?
cat <?
ren -- renames a number of files using sed regular expressions?
USAGE: ren 'regexp' 'replacement' files...?
EXAMPLE: rename all *.HTM files in *.html:?
ren 'HTM$' 'html' *.HTM?
HELP?
exit 0?
fi?
OLD="$1"?
NEW="$2"?
# The shift command removes one argument from the list of?
# command line arguments.?
shift?
shift?
# $* contains now all the files:?
for file in $*; do?
if [ -f "$file" ] ; then?
newfile=`echo "$file" | sed "s/${OLD}/${NEW}/g"`?
if [ -f "$newfile" ]; then?
echo "ERROR: $newfile exists already"?
else?
echo "renaming $file to $newfile ..."?
mv "$file" "$newfile"?
fi?
fi?
done?

講解: 這是一個復雜一些的例子。讓我們詳細討論一下。第一個if表達式判斷輸入命令行參數是否小于3個 (特殊變量$# 表示包含參數的個數) 。如果輸入參數小于3個,則將幫助文字傳遞給cat命令,然后由cat命令將其打印在屏幕上。打印幫助文字后程序退出。 如果輸入參數等于或大于3個,我們就將第一個參數賦值給變量OLD,第二個參數賦值給變量NEW。下一步,我們使用 shift命令將第一個和第二個參數從 參數列表中刪除,這樣原來的第三個參數就成為參數列表$*的第一個參數。然后我們開始循環,命令行參數列表被一個接一個地被賦值給變量$file。 接著我 們判斷該文件是否存在,如果存在則通過sed命令搜索和替換來產生新的文件名。然后將反短斜線內命令結果賦值給newfile。這樣我們就達到了我們的目 的:得到了舊文件名和新文件名。然后使用mv命令進行重命名。

4.
通常用 " [ ] " ? 來表示條件測試。 注意這里的空格很重要。 要確保方括號的空格。 ?
[ -f "somefile" ]?
判斷是否是一個文件 ?
[ -x "/bin/ls" ] ?:
判斷/ bin /ls 是否存在并有可執行權限 ?
[ -n "$var" ] ?:
判斷$var 變量是否有值
[ -e "somefile" ]:判斷文件是否存在
[ -d "somefile" ]:判斷是否為文件夾
[ -r "somefile" ]:判斷文件是否可讀
[ -w "somefile" ] :判斷文件是否可寫
[ -x "somefile" ]:判斷文件是否可執行

[ "$a" = "$b" ] ?:
判斷$a 和$a 是否相等 ?

5. 雙引號、單引號和反引號(后置引用)
雙引號: 阻止了所有在引號中的特殊字符的重新解釋--包括變量名--但是$,`(后置引用)和/除外.保留$,作為特殊字符的意義,是為了能夠在雙引號中也能夠正常地引用變量("$var")。
使用""來防止單詞分割.[4]如果在參數列表中使用雙引號,將使得雙引號中的參數作為一個參數.即使雙引號中的字符串包含多個單詞(也就是包含空白部分),也不會變為多個參數。

單引號:
單引號操作總體上和""很像,但不允許引用變量.因為$的特殊含義被關閉了.在''中除了',其他
字符都沒有特殊的含義了.所以單引號比雙引號嚴格.?因為即使是/,在''中都被關閉了,所以你想在''中顯示'的含義,將得不到預期的效果.

反引號(后置引用): 命令替換將會重新分配一個命令甚至是多個命令的輸出;:它會將命令的輸出如實地添加到另一個上下文中。使用命令替換的典型形式是使用后置引用(`...`). 后置引用形式的命令(就是被反引號括起來)將會產生命令行文本。
使用后置引用的意義在于:命令的輸出可以被當成傳遞到另一個命令的參數, 或者保存到變量中, 甚至可以用來產生for 循環的參數列表.

例如:
#!/bin/sh
file abc.zip??? # 執行并輸出,但無法將其命令行輸出賦值給一個變量
file_type=`file abc.zip`? # 可執行并把其輸出賦值給變量file_type

shell腳本命令行參數傳遞問題


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲国产精品毛片∧v卡在线 | 欧美一区二区三区视频在线观看 | 日韩欧美色视频 | 精品一区二区三区四区乱码90 | 视频精品一区二区三区 | 四虎影院永久地址 | 亚洲国产欧美一区二区欧美 | 精品国产综合区久久久久99 | 中文字幕日韩精品中文区 | 欧美成人毛片免费网站 | 国内毛片视频 | 欧美一二区 | 四虎影院免费观看视频 | 一级毛片美国一级j毛片不卡 | 中文在线1区二区六区 | 日本高清毛片视频在线看 | 99热久久这里只有精品6 | 免费a黄色| 一本一道波多野结衣一区二区 | 精品无人区乱码一区二区 | 女人色毛片女人色毛片中国 | 亚洲免费不卡 | 国产精品欧美一区二区三区不卡 | xxxx性xx另类 | 久久夜色精品国产尤物 | 精品成人毛片一区二区视 | 亚洲色图二区 | 午夜在线社区视频 | 亚洲国产精品a一区二区三区 | 久久99精品久久久66 | 99国产精品高清一区二区二区 | 五月天婷婷激情 | 日本精品久久久久中文字幕 1 | 国产在线视频色综合 | 中文字幕在线亚洲 | 国产精品一区高清在线观看 | 国内高清久久久久久久久 | 一本一本久久a久久精品综合 | 乱在线伦视频免费 | 福利视频欧美一区二区三区 | 尹人视频在线观看 |