当前位置:首页 » 编程软件 » linuxsh脚本for参数

linuxsh脚本for参数

发布时间: 2022-11-30 01:23:25

1. linux shell脚本下使用for循环 输出等边三角形 过任务的 求大神指点

#!/bin/bash
read -p "please input the longs:" long
for((i=1;i<=$long;i++))
do
for((j=$long;j>i;j--))
do
echo -n " "
done
for m in `seq 1 $i`
do
echo -n "+"
done
for((n=1;n<i;n++))
do
echo -n "+"
done
echo ""
done

long为你自己输入的边长,如果有规定长度,把$long改成数就行

2. linux sh命令都有什么参数啊(sh -参数 脚本名称)

[root@CactiEZ ~]# sh --help
GNU bash, version 4.1.2(1)-release-(x86_64-unknown-linux-gnu)
Usage: sh [GNU long option] [option] ...
sh [GNU long option] [option] script-file ...
GNU long options:
--debug
--debugger
--mp-po-strings
--mp-strings
--help
--init-file
--login
--noediting
--noprofile
--norc
--posix
--protected
--rcfile
--rpm-requires
--restricted
--verbose
--version
Shell options:
-irsD or -c command or -O shopt_option (invocation only)
-abefhkmnptuvxBCHP or -o option
Type `sh -c "help set"' for more information about shell options.
Type `sh -c help' for more information about shell builtin commands.

3. Linux shell 脚本 间接获取输入参数的方法

如果是bash,可以用indirect expansion来搞,语法为 ${!var}。
比如
foo=bar
bar=123
echo ${!foo}
会打印 123

再比如下面的脚本,依次打印脚本的各个输入参数。

#!/bin/bash
var=1
while [ $var -le $# ]
do
echo "Param $var is ${!var}"
let var++
done

不用indirect expansion,也可以用 eval, 比如

#!/bin/bash
var=1
while [ $var -le $# ]
do
eval echo "Param $var is \$$var"
let var++
done

4. linux远程登陆的shell脚本for循环无结果

我比较认同“ssh之后是远程主机执行的命令
本地变量不起作用”这种说法
你的脚本之所以$aaa能回显,是因为在本地定义了这个变量,但本地没有定义$i这个变量,所以无法显示变量值,把aaa="u1 u2"一块塞<<ff.......ff这个内联重定向数据中去。再试试看。

5. Linux shell for 循环和双层循环

Shell 脚本一直以来不是很入门,很多时候就是用到再查,发现自己有几个重复用比较高的点,还是记录一下,至少查的时候能少费点功夫~~

(1)列表for循环

Shell支持使用略写的计数方式,如{1..10},表示1到10的整数数字;
Shell还支持安规定的步数进行跳跃的方式实现列表for循环,例如计算1~100之内所有奇数的和。

i 按照2的增量增长,一直到增长到100。即实现100内奇数加和。还可以使用seq命令实现按2递增来计算1..100内的所有奇数之和。 for i in $(seq 1 2 100) ,seq 表示起始值为1,增量为2,结束条件值为100。

for循环除了数字列表,还可以生成字符串行表,如列出当前文件夹下的所有文件:

还可以传递命令行参数

$#表示传递的参数的个数;$@表示参数的列表。

(2) 类C风格的for循环
也称之为计次循环。 切记使用的是双括号。

上面的计算100以内奇数的和可以使用类C的for循环实现

通过for循环实现九九乘法表

6. Linux的shell脚本for循环怎么调用位置变量

1、利用$@, $#, $*参数或shift移位参数进行循环
2、例1
#!/bin/sh
while [ $# -gt 0 ]; do
echo $1
shift;
done
3、例2
#!/bin/sh
until (($#==0)); do
echo $1
shift;
done
4、例3
#!/bin/sh
for x in $*;do
echo $x
done
5、例4
#!/bin/sh
for x in $@;do
echo $x
done

7. linux shell脚本读取用户输入的参数

新建一个test.sh文件
#!/bin/shecho "1 : For Test"echo "2 : For nohup &" while true do echo -n "please enter the number:" read line echo "$line" if [[ $line = "1" ]];then echo "For Test" elif [[ $line = "2" ]];then echo "For nohup &" else echo "can not find command" fidone

运行测试日志如下:
[root@master batch]# sh test.sh1 : For Test2 : For nohup &please enter the number:11For Testplease enter the number:22For nohup &please enter the number:33can not find commandplease enter the number:sssscan not find commandplease enter the number:

8. linux执行sh脚本的指令有哪些

bash shell 脚本的方法有多种,现在作个小结。假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限。
方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:

复制代码代码如下:

cd /data/shell

./hello.sh

./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录(/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行。

方法二:以绝对路径的方式去执行bash shell脚本:

复制代码代码如下:

/data/shell/hello.sh

方法三:直接使用bash 或sh 来执行bash shell脚本:

复制代码代码如下:

cd /data/shell

bash hello.sh



复制代码代码如下:

cd /data/shell

sh hello.sh

注意,若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。因为方法三是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限。那么不用指定bash路径自然也好理解了啊,呵呵……。

方法四:在当前的shell环境中执行bash shell脚本:

复制代码代码如下:

cd /data/shell

. hello.sh



复制代码代码如下:

cd /data/shell

source hello.sh

前三种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。而方法四则是在当前shell中执行的。

9. linux shell脚本执行命令详解

在Linux下,如果你需要执行shell脚本,那么应该使用那个命令呢?下面由我为大家整理了linux shell脚本执行命令的相关知识,希望对大家有帮助!

linux shell脚本执行

linux shell脚本执行方法一: 切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:

cd /data/shell

./hello.sh

./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录(/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行。

linux shell脚本执行方法二: 以绝对路径的方式去执行bash shell脚本:

/data/shell/hello.sh

linux shell脚本执行方法三: 直接使用bash 或sh 来执行bash shell脚本:

cd /data/shell

bash hello.sh

cd /data/shell

sh hello.sh

注意,若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。因为方法三是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限。那么不用指定bash路径自然也好理解了啊。

linux shell脚本执行方法四: 在当前的shell环境中执行bash shell脚本:

cd /data/shell

. hello.sh

cd /data/shell

source hello.sh

前三种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。而方法四则是在当前shell中执行的。

10. linux中设计一个shell脚本程序可以接受命令行输入的参数执行相应的菜单命令

之所以用到命令行参数,关键在于shell脚本需要与运行脚本的人员进行交互。
bash shell提供了命令行参数添加在命令后面的数据值)、命令行选项修改命令行为的单字符值)和直接读取键盘输入。
1、命令行参数
向shell脚本传递数据的最基本方式是使用命令行参数。
1)读取参数
读取输入的参数的变量为位置参数,位置参数通过标准数字表示,
其中$0为程序名称,$1为第一个参数,$2为第二个参数,依次类推,直到$9为第九个参数。
shell脚本自动将命令行参数赋值给各个位置变量。
同时输入多个参数可以是数值也可以是字符串)时,必须使用空格分隔要想在参数值中包含空格,就必须使用单引号或双引号)
当参数多于9个后,必须在shell脚本内使用大括号将变量括起来,如${10}。从而可以使用任意个参数。
2)读取程序名称
传递给变量$0的字符串实际上是程序的路径根据调用方法决定是相对还是绝对路径)。
使用basename命令可以去掉路径前缀,只获得程序名称名字中不 可以有空格)。
3)测试脚本
当脚本认为应该包含参数,却实际上没有数据时,就会出错。
好的方法是对参数进行检查来保证使用参数前确实存在数据,可以使用-n参数来检查。
例子:if [ –n “$1” ] then .. else .. fi
2、特殊的参数变量
用于跟踪命令行参数
1)参数计数
使用特殊变量$#测试执行脚本时包含的命令行参数个数。脚本中任何位置都可以 使用$#
例子:if [ $# –ne 2 ] 即可测试参数个数
可以使用${!#}来返回最后一个命令行参数当无参数时,$#为0,而${!#}为程序名)
2)获取所有数据
变量$*将命令行中提供的所有参数作为一个单词处理,它将多个参数看成 一个参数。
变量$@将命令行中提供的所有参数作为同一个字符串中的多个单词处理。 允许对其中的值进行迭代一般使用for),分隔开不同参数
3、移位
shift命令能够改变命令行参数的相对位置。默 认将每个参数变量左移一个位置变量$0不变,把$1丢弃,注意不可以恢复了!)
在不清楚参数数目情况下,这是一个迭代参数的好办法。
可以为shift提供一个参数,来实现多位移变化。
4、处理选项
选项是由破折号引导的单个字母,用于更改命令的行为。
1,找出选项
1)处理简单选项
可以使用处理命令行参数相同的方法处理选项,抽取时使用case语句进行判断是否符合选项格式。
2)从参数中分离选项
同时使用选项和参数时,可以使用--指示选项列表的结束。发现--后,shell就知道后面的是普通参数了,停止使用case处理选项。
3)处理带值的选项
选项后紧跟参数值,一种方法是在case中对应选项后使用shift和读后一位参数的方法处理。更好的方法如 下:
2,使用getopt命令
getopt命令在处理选项和参数时非常方便。它对参数进行重新组 织,以便于解析
1)命令格式
getopt可以接受任意形式的选项和参数列表,并自动将它们转换为适当的格式。
命令格式为: getopt options optstring parameters
选项字符串(opstring)用于定义命令行中的有效选项字母,以及哪些选项字母需要参数值。
2)脚本中使用getopt
需要使用set命令将现有的命令行选项和参数替换为getopt命令生成的 格式化形式。
需要将原始脚本命令行参数送给getopt命令,然后将getopt命令输出送给set命令,如下:set – `getopts –q ab:cd “$@”`
但是getopt命令不能很好的处理带有空格的参数值,它将空格解析为参数分隔符,而不是将双引号引起来的两个 值合并成一个参数。解决办法如下:
3)更高级的getopts命令
getopts命令顺序的对现有的shell参数变量进行处理,每调用一次,只处理命令中检测到的参数中的一个。处理完所有参数后,以大于0的退出 状态退出。
非常适宜于在循环中解析所有命令行参数
格式为: getopts optstring variable
$optarg包含需要参数值的选项要使用的值,$optind包含getopts停止处理时在参数列表中的位置。
注意:当getopts处理时,会将选项前的-去掉,所以对应的case中不需要破折号。
好的特性:
1)可以在参数值中包含空格
2)选项字母和参数值中间可以没有空格
3)将在命令行中找到的未定义的选项都绑定为单一的输出——问号
5、标准化选项
有一些字母选项具有标准含义。最好按照标准含义定义选项意义
-a –c –d –e –f –h –i –l –n –o –q –r –s –v- x –y
6、获取用户输入
当需要在执行过程中获得执行脚本人员的输入,使用read命令
1)基本读取
read命令接受标准输入或其他文件描述符输入。读入后将数据放入 一个标准变量中。
-p 允许在read命令行中直接指定一个提示。
可以指定多个变量,也可以不指定将放置在reply环境变量中)
2)计时
使用-t指定一个计时器,计时数满还未输入,read返回一个非0的退出状态。
使用-n指定输入的字符个数,输入达到预定数目时,就自动结束输入
3)默读
使用-s使输入不显示在终端例如输入密码)
4)读取文件
最常用的方法是使用cat命令,并通过管道传给包含read的while语句。

热点内容
sql培训视频 发布:2024-05-04 16:00:59 浏览:262
极无双平新服务器什么时候出 发布:2024-05-04 15:50:47 浏览:660
c语言千分数 发布:2024-05-04 15:46:31 浏览:344
数据库no 发布:2024-05-04 15:38:00 浏览:220
ionic编译android 发布:2024-05-04 15:20:45 浏览:488
云服务器在哪买 发布:2024-05-04 15:19:18 浏览:85
华为如何用电脑解锁手机密码 发布:2024-05-04 14:54:38 浏览:574
斐波那契数列的递归算法 发布:2024-05-04 14:34:55 浏览:969
数字支付密码哪里找 发布:2024-05-04 14:26:50 浏览:86
天翼云免费存储 发布:2024-05-04 14:22:55 浏览:782