【轉】shell腳本中如何傳入參數


(1)直接用$1,$2取傳入的參數
vim /root/test.sh
#!/bin/bash
if [ $1 == "start" ]
  then   
  echo "do start"
  command groups
  elif [ $1 == "stop" ]
  then
  echo "do stop"
  command group
  else
  echo "Please make sure the positon variable is start or stop."
fi

#sh test.sh stop 

$1取到了stop這個參數,接收來自命令行傳入的參數,第一個參數用$1表示,第二個參數$2表示,。。。以此類推。
注意:$0表示腳本文件名。另外一個在shell編程中經常用到 的是“$@”這個代表所有的參數,你可以用一個循環來遍歷這個參數.

(2)使用for循環取所有輸入的參數
vim /root/test.sh
#!/bin/bash
for args in $@
do
   echo $args
done

把上面這段代碼錄入保存為test.sh,授限可執行chmod +x test.sh:
#sh /root/test.sh arg1 arg2 arg3 arg4 xxx
輸出參數:
arg1
arg2

arg3
arg4
xxx

這個例子中,我們用到了之“$@”,它代表了所有的命令行參數。
在這里用for對其進行遍歷,系統迭代地從$@中取出命令行參數把他放到args中,最后使用echo $args進行輸出。


(3)遍歷當前目錄下的文件
for更經常用到的是遍歷目錄,下面的例子用於列出當前目錄下的所有文件和文件夾的名稱
不用編輯腳本,在命令行,直接輸入以下命令:
 for file in *
 do
 echo $file
 done
 
這里用*代表當前目錄,列出的是所有的文件和文件夾的名稱,在這里,文件夾和文件你是分不出來的,如果你需要,你應該用if [-d ${file}]來做一下判斷。
只輸出目錄名:
vim /test.sh
for file in *
do
   if [ -d $file ]; then
     echo $file
   fi
done
                          

(4)對於文件遍歷,可以在 “in” 后面接上多個表達式。也就是說,你可以一次在遍歷多個目錄。
下面這段代碼能把當前目錄下/etc文件夾和/var文件夾里的文件
#!/bin/bash
for args in /etc/* /var/*
do
  echo "print ${args} "
done


---------------------
作者:openbox2008
來源:CSDN
原文:https://blog.csdn.net/openbox2008/article/details/80526329
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM