如题所述
æ¹æ³/æ¥éª¤
æ§è¡ânano test.shâå建ä¸ä¸ªæ°çshellèæ¬ã
èæ¬test.shçå 容å¦ä¸ï¼
#!/bin/sh
name=$1
echo "the ${name} are great man!"
ç»æ°å建çtest.shçèæ¬èµå¯æ§è¡æéï¼å½ä»¤ä¸ºâchmod 755 test.shâã
æ§è¡'./test.sh "xiao wang"'å½ä»¤ï¼å¯ä»¥çå°èªå·±ç¼åèæ¬çç»æâthe xiao wang are great man!âã
"name=$1"ä¸$1为系ç»æä¾çä½ç½®åæ°ï¼$0代表ç¨åºçå称ï¼[$1/$2/...]ä»1å¼å§ä¸ºä¼ éçåæ°ã
linuxç³»ç»é¤äºæä¾ä½ç½®åæ°è¿æä¾å ç½®åæ°ï¼å ç½®åæ°å¦ä¸ï¼ã
$# ----ä¼ éç»ç¨åºçæ»çåæ°æ°ç® ã
ã $? ----ä¸ä¸ä¸ªä»£ç æè shellç¨åºå¨shellä¸éåºçæ åµï¼å¦ææ£å¸¸éåºåè¿å0ï¼åä¹ä¸ºé0å¼ã ãã
$* ----ä¼ éç»ç¨åºçææåæ°ç»æçå符串ã ãã
$n ----表示第å 个åæ°ï¼$1 表示第ä¸ä¸ªåæ°ï¼$2 表示第äºä¸ªåæ° ... ãã$0 ----å½åç¨åºçå称 ãã
$@----以"åæ°1" "åæ°2" ... å½¢å¼ä¿åææåæ° ãã
$$ ----æ¬ç¨åºç(è¿ç¨IDå·)PID ãã
$! ----ä¸ä¸ä¸ªå½ä»¤çPID
æ§è¡ânano test.shâå建ä¸ä¸ªæ°çshellèæ¬ã
èæ¬test.shçå 容å¦ä¸ï¼
#!/bin/sh
name=$1
echo "the ${name} are great man!"
ç»æ°å建çtest.shçèæ¬èµå¯æ§è¡æéï¼å½ä»¤ä¸ºâchmod 755 test.shâã
æ§è¡'./test.sh "xiao wang"'å½ä»¤ï¼å¯ä»¥çå°èªå·±ç¼åèæ¬çç»æâthe xiao wang are great man!âã
"name=$1"ä¸$1为系ç»æä¾çä½ç½®åæ°ï¼$0代表ç¨åºçå称ï¼[$1/$2/...]ä»1å¼å§ä¸ºä¼ éçåæ°ã
linuxç³»ç»é¤äºæä¾ä½ç½®åæ°è¿æä¾å ç½®åæ°ï¼å ç½®åæ°å¦ä¸ï¼ã
$# ----ä¼ éç»ç¨åºçæ»çåæ°æ°ç® ã
ã $? ----ä¸ä¸ä¸ªä»£ç æè shellç¨åºå¨shellä¸éåºçæ åµï¼å¦ææ£å¸¸éåºåè¿å0ï¼åä¹ä¸ºé0å¼ã ãã
$* ----ä¼ éç»ç¨åºçææåæ°ç»æçå符串ã ãã
$n ----表示第å 个åæ°ï¼$1 表示第ä¸ä¸ªåæ°ï¼$2 表示第äºä¸ªåæ° ... ãã$0 ----å½åç¨åºçå称 ãã
$@----以"åæ°1" "åæ°2" ... å½¢å¼ä¿åææåæ° ãã
$$ ----æ¬ç¨åºç(è¿ç¨IDå·)PID ãã
$! ----ä¸ä¸ä¸ªå½ä»¤çPID
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2018-05-10
写一个 程序名为 test.sh 可带参数为 start 和 stop
执行 test.sh start
执行 start 内容的代码
执行 test.sh stop
执行 stop 内容的代码
#!/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
自变量的接收
接收来自命令行传入的参数,第一个参数用$1表示,第二个参数$2表示,。。。以此类推。注意:$0表示脚本文件名。另外一个在shell编程中经常用到 的是“$@”这个代表所有的参数,。你可以用一个循环来遍历这个参数。如果用java来类比的话,可以把$@看作是man函数中定义的那个数组
for examples:
bash里的语句总是那么的人性化,十分的接近自然语言,在for语句中几乎可以迭代任何类似与集合的数据类型(或许这样个说法不对,但我确实想不到更好的词来代替)。
看一个例子:
#!/bin/bash
for args in $@
do
echo $args
done
把上面这段代码录入保存为showargs.sh设置为可执行(chmod +x showargs.sh)执行:
$ ./showargs.sh arg1 arg2 arg3 arg4
arg1
arg2
arg3
arg4
这个例子中,我们用到了之“$@”,它代表了所有的命令行参数。在这里用for对其进行遍历,系统迭代地从$@中取出命令行参数把他放到args中,最后使用echo $args进行输出。
for更经常用到的是遍历目录,下面的例子用于列出当前目录下的所有文件和文件夹的名称
$ for file in *
> do
> echo $file
> done
这里用*代表当前目录,列出的是所有的文件和文件夹的名称,在这里,文件夹和文件你是分不出来的,如果你需要,你应该用if [-d ${file}]来做一下判断。
对于文件遍历,更有趣的是,你可以在 “in” 后面接上多个表达式。也就是说,你可以一次在遍历多个目录。
下面这段代码能把当前目录下go文件夹和do文件夹里的文件复制到fo文件夹下
#!/bin/bash
for args in ./go/* ./do/*
do
cp ${args} ./fo
echo "copying ${args} to ./fo/${args}"
done本回答被网友采纳
执行 test.sh start
执行 start 内容的代码
执行 test.sh stop
执行 stop 内容的代码
#!/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
自变量的接收
接收来自命令行传入的参数,第一个参数用$1表示,第二个参数$2表示,。。。以此类推。注意:$0表示脚本文件名。另外一个在shell编程中经常用到 的是“$@”这个代表所有的参数,。你可以用一个循环来遍历这个参数。如果用java来类比的话,可以把$@看作是man函数中定义的那个数组
for examples:
bash里的语句总是那么的人性化,十分的接近自然语言,在for语句中几乎可以迭代任何类似与集合的数据类型(或许这样个说法不对,但我确实想不到更好的词来代替)。
看一个例子:
#!/bin/bash
for args in $@
do
echo $args
done
把上面这段代码录入保存为showargs.sh设置为可执行(chmod +x showargs.sh)执行:
$ ./showargs.sh arg1 arg2 arg3 arg4
arg1
arg2
arg3
arg4
这个例子中,我们用到了之“$@”,它代表了所有的命令行参数。在这里用for对其进行遍历,系统迭代地从$@中取出命令行参数把他放到args中,最后使用echo $args进行输出。
for更经常用到的是遍历目录,下面的例子用于列出当前目录下的所有文件和文件夹的名称
$ for file in *
> do
> echo $file
> done
这里用*代表当前目录,列出的是所有的文件和文件夹的名称,在这里,文件夹和文件你是分不出来的,如果你需要,你应该用if [-d ${file}]来做一下判断。
对于文件遍历,更有趣的是,你可以在 “in” 后面接上多个表达式。也就是说,你可以一次在遍历多个目录。
下面这段代码能把当前目录下go文件夹和do文件夹里的文件复制到fo文件夹下
#!/bin/bash
for args in ./go/* ./do/*
do
cp ${args} ./fo
echo "copying ${args} to ./fo/${args}"
done本回答被网友采纳
第2个回答 2017-01-12
参数如下:
$# ----传递给程序的总的参数数目
$? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$* ----传递给程序的所有参数组成的字符串。
$n ----表示第几个参数,$1 表示第一个参数,$2 表示第二个参数 ... $0 ----当前程序的名称
$@----以"参数1" "参数2" ... 形式保存所有参数
$$ ----本程序的(进程ID号)PID
$! ----上一个命令的PID
$# ----传递给程序的总的参数数目
$? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$* ----传递给程序的所有参数组成的字符串。
$n ----表示第几个参数,$1 表示第一个参数,$2 表示第二个参数 ... $0 ----当前程序的名称
$@----以"参数1" "参数2" ... 形式保存所有参数
$$ ----本程序的(进程ID号)PID
$! ----上一个命令的PID
第3个回答 2020-05-03
[root@localhost ~]# cat shift.sh
#!/bin/bash
a=''
b=''
c='ccc'
while [ -n "$1" ]
do
case "$1" in
-a) a="$2"
shift ;;
-b) b="$2"
shift ;;
-c) c="$2"
esac
shift
done
out=${b}_${a}_${c}
echo ${out}
[root@localhost ~]# sh shift.sh -c ccc -b bbb -a aaa
bbb_aaa_ccc
#!/bin/bash
a=''
b=''
c='ccc'
while [ -n "$1" ]
do
case "$1" in
-a) a="$2"
shift ;;
-b) b="$2"
shift ;;
-c) c="$2"
esac
shift
done
out=${b}_${a}_${c}
echo ${out}
[root@localhost ~]# sh shift.sh -c ccc -b bbb -a aaa
bbb_aaa_ccc