2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Viitelinkki: https://www.cnblogs.com/wjq/p/14863580.html
#!/bin/bash
echo "$0:$0" # 当前脚本的文件名(间接运行时还包括绝对路径)。
echo "$n:$n" # 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1 。
echo "$#:$#" # 传递给脚本或函数的参数个数。
echo "$*:$*" # 传递给脚本或函数的所有参数。
echo "$@:$@" # 传递给脚本或函数的所有参数。被双引号 (" ") 包含时,与 $* 不同,下面将会讲到。
echo "$?:$?" # 上个命令的退出状态,或函数的返回值。
echo "$$:$$" # 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。
echo "$_:$_" # 上一个命令的最后一个参数。
echo "$!:$!" # 后台运行的最后一个进程的 ID 号。
$*
ja$@
tarkoittaa, että kaikkia funktiolle tai komentosarjalle välitettyjä parametreja, jos niitä ei ole suljettu lainausmerkeillä (""), edeltää "$1"" 2 " … " 2" … " 2"…"n" tulostaa kaikki parametrit. Mutta kun ne on lainausmerkeissä (""),"$*
"ottaa kaikki parametrit kokonaisuutena, "$1 $2... Kaikki parametrit tulostetaan muodossa n "; kaikki parametrit tulostetaan muodossa " n"; "`n"Tulosta kaikki parametrit lomakkeeseen;"‘@`" erottaa jokaisen parametrin "$1", " 2 " 、 … 、 " 2"、…、" 2"、…、"n"-muodossa kaikkien parametrien tulostamiseksi.
[root@localhost myself]# sh test.sh A B B D E
$0:test.sh
$n:
$#:5
$*:A B B D E
$@:A B B D E
$?:0
$$:109424
$_:$$:109424
$!:
shift
Komentoa käytetään parametrien siirtämiseen (vasen siirto). Sitä käytetään yleensä kunkin parametrin läpikulkuun vuorollaan ja sen mukaiseen käsittelyyn tietämättä siirrettyjen parametrien määrää. Sitä käytetään yleisesti Linuxin eri ohjelmien käynnistysskripteissä.
#!/bin/bash
while [ $# != 0 ]
do
echo -e "参数值为 $1, 参数个数为 $#"
shift
done
# 每次运行 shift(不带参数的),销毁一个参数(变量的个数($#)减一),后面的参数前移(不管参数之间相隔一个或者多个空格)。
[root@localhost myself]# sh shift1.sh a b c d e
参数值为 a, 参数个数为 5
参数值为 b, 参数个数为 4
参数值为 c, 参数个数为 3
参数值为 d, 参数个数为 2
参数值为 e, 参数个数为 1
# 注意:上述脚本,如果 shift 移动参数变为 2 ,在参数个数为奇数时则会出现死循环,如果是偶数则没问题。
# 脚本示例:
#!/bin/bash
while [ $# != 0 ]
do
echo -e "参数值为 $1, 参数个数为 $#"
shift 2 # 这里移动位数变为2
done
Vaihtokomenton kerralla siirtämien parametrien lukumäärä määräytyy sen kuljettamien parametrien mukaan.Esimerkiksi $1, $2, $3, ..., $9 parametreja on nyt käsitelty, kun komentotulkkiohjelma on käsitellyt 4 ensimmäistä komentoriviparametria (eli seuraavat 5 parametria on jäljellä), voit käyttää.
shift 4
Komento siirtää $9 arvoon $1.
#!/bin/bash
while [ $# -gt 5 ]
do
echo -e "参数值为 $1, 参数个数为 $#"
shift
done
shift 4
echo -e "参数值为 $1, 参数个数为 $#"
[root@localhost myself]# sh shift2.sh a1 b2 c3 d4 e5 f6 g7 h8 i9
参数值为 a1, 参数个数为 9
参数值为 b2, 参数个数为 8
参数值为 c3, 参数个数为 7
参数值为 d4, 参数个数为 6
参数值为 i9, 参数个数为 1
tapauksen esittely
case ..... esac
jaif ... then ... fi
Ne ovat kaikki ehdollisia lauserakenteita. Ne käyttävät käänteisen järjestyksen aakkosisia sanoja ja eteenpäin suunnattuja sanoja pariksi, kutenif
lause, käytetty lopussafi
sovittaa yhteen,esac
jacase
pari
case $参数变量 in # 以关键字 case 作为开始
"变量值1") # 变量值用双引号括起来,关键字用小括号括起来
程序段1 # 对应的逻辑
;; # 每个类别结尾使用两个连续的分号来处理
"变量值2")
程序段2
;;
"变量值3")
程序段3
;;
*) # 最后一个位置参数值会用*来代替所有其他值
程序段4
;;
esac # 关键字 esac(case 的反写) 结束
shift
ottelucase ... esac
Toteuta komentosarjan manuaalinen parametrien käsittely#!/bin/bash
while [ -n "$1" ]
do
case "$1" in
-a)
echo "发现 -a 选项"
;;
-b)
echo "发现 -b 选项"
echo "-b 选项的参数值是:$2"
shift
;;
-c)
echo "发现 -c 选项"
echo "-c 选项的参数值是:$2"
shift
;;
*)
echo "$1 是一个未知选项"
;;
esac
shift
done
[root@localhost myself]# sh shift3.sh -a -b 200 -c 300 -d 400
发现 -a 选项
发现 -b 选项
-b 选项的参数值是:200
发现 -c 选项
-c 选项的参数值是:300
-d 是一个未知选项
400 是一个未知选项