国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Shell最多支持多少個參數?

2019-10-26 18:42:37
字體:
來源:轉載
供稿:網友

在腳本編寫過程中,通常會涉及到參數的輸入。譬如,sh 1.sh 10 20,在執行1.sh這個腳本中,10即為第一個參數,20即為第二個參數。有時,就會有這個疑惑,即shell腳本最多可以支持多少個變量呢?疑惑之余,編寫了如下腳本,可求出Shell腳本中可輸入參數的最大個數。

該腳本涉及到三個小腳本:1.sh 2.sh 3.sh --在這里為了方便,腳本名都是極其簡單的。總的思路是給定一個特定的值n,作為輸入參數的最大個數,然后將1,2,3...n作為腳本的輸入參數,這通過腳本2.sh來實現,接著原樣輸出這些參數。如果這些參數全部都能輸出,即代表給定的n是合理的。這通過腳本3.sh來實現。1.sh實現的功能是通過一個死循環,遞增生成n,通過引用2.sh來判定n是否合理。具體可見如下腳本。

首先我們來看看第一個腳本1.sh

代碼如下:
#!/bin/bash
i=0
echo 0 > currnumber
while true
do
  i=$[$i+1]
  sh 2.sh $i
  if [ $? -ne 0 ];then
      echo $i > maxnumber
      exit 1
  else
      sed -i '1s/$/& '$i'/' currnumber
  fi
done

該腳本主要是提供了一個死循環,$i指的是可輸入參數的個數,2.sh用于判定給定參數的個數是否合理,如果合理,則將該數值追加到currnumber這個文件中,如果不合理,則代表$i-1是shell能接受的最大參數個數。則將該數值輸出到maxnumber文件中。

currnumber文件的應用便于檢測腳本的執行情況。原打算是echo $i >> currnumber,即每一個合理的數值都輸出一行,考慮到文件有最大行數的限制,在這里,就將數值輸出到一行。sed -i '1s/$/& '$i'/' currnumber即實現該功能,將$i的值添加到行尾。

再來看看腳本2.sh

代碼如下:
#!/bin/bash
rm -f 1.test
touch 1.test
num=$1
echo "#!/bin/bash" > 1.test
echo "sh 3.sh" >> 1.test
for ((i=1; i<=$num; i++))
do
   sed -i '2s/$/& '$i'/' 1.test
done
sh 1.test

腳本2實現的功能是將1,2,3...$i作為3.sh的輸入參數,同樣,sed -i '2s/$/& '$i'/' 1.test實現的是將1,2,3...n輸出到一行。譬如如果$num=10,則1.test的內容如下所示:

代碼如下:
#!/bin/bash
sh 3.sh 1 2 3 4 5 6 7 8 9 10

最后我們來看看腳本3.sh

代碼如下:
#!/bin/bash
echo 0 > 2.test
num=$#
for ((i=1;i<=$num;i++))
do
   sed -i '1s/$/& '$i'/' 2.test
   shift 1
done

該腳本實現的是原樣輸出輸入參數,并將該輸入參數輸出到2.test中。同樣,sed -i '1s/$/& '$i'/' 2.test實現的是追加參數到一行。

總結:

1> sh 1.sh即可求出shell腳本允許的最大輸入參數個數。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲沃县| 靖西县| 方山县| 永修县| 福建省| 拜城县| 乐清市| 锦州市| 咸丰县| 徐闻县| 班戈县| 盐池县| 章丘市| 雷波县| 张北县| 子洲县| 六安市| 八宿县| 江城| 阜新市| 嵊州市| 东莞市| 遵义县| 金堂县| 开江县| 双流县| 上犹县| 平陆县| 白沙| 土默特右旗| 富宁县| 增城市| 西青区| 东平县| 西城区| 收藏| 香格里拉县| 石狮市| 九龙坡区| 武陟县| 三河市|