请问一个shell的简单问题,本人刚开始学系。
来自: 更新日期:早些时候
一个简单的shell问题~
请问一个shell的简单问题,本人刚开始学系。视频
相关评论:15066118388:请问一个shell的简单问题,本人刚开始学系。
袁话菁假如:$1=itm\/5.0.0\/1、PAK_PATH=$(echo "$1" | sed 's\/\\\/$\/\/g')执行结果:PAK_PATH=itm\/5.0.0功能说明:就是用sed命令,如果$1的最后一个字符是\/,那么就把\/替换为空(即:去掉),因此,输出结果为PRO_VER=itm\/5.0.02、PRO_VER=$(echo "$1" | sed 's\/\\\/$\/\/g'|awk...
15066118388:linux shell脚本问题(简单)
袁话菁if 语句:条件语句为真(1),执行条件为真的语句(cat + ls)条件语句为假(0),执行条件为假的语句(cat ...)
15066118388:请教,我写一个简单的shell脚本,但是提示“ 期待整数表达式”
袁话菁可能少个符号"$",我的也是这个问题 1 #!\/bin\/bash 2 #从命令行中输入一个数n,统计1+..+n的值是多少 3 4 SUM=0 5 i=0 6 while [ $i -le $1 ]7 do 8 SUM=$[$SUM+$i]9 i=$[$i+1]10 done 11 echo "sum=$SUM"
15066118388:一个简单的shell脚本问题!怎么出现了死循环呢?谢谢
袁话菁q)echo "quit"a=11 或直接用 break ;;Q)echo "quit"a=11 或直接用 break ;;另外,可以这样写,表示同时匹配两个字母:qQ) xxx ;;
15066118388:一个简单的shell脚本报错,错误码是too many arguments
袁话菁!\/bin\/bash file_list="opt\/trap.log \/opt\/Data_Migration.conf \/opt\/test.sh"for i in $file_list do file_size=`du -sh $i`if [[ $file_size > 1 ]]; then echo $file_size fi done ]; 这俩连着 把 -gt 换成 >
15066118388:简单的shell脚本作业,但是没思路啊!新手求助!
袁话菁对传给shell脚本的选项分析通常有两种方法,一种是通过case语句手工分析,另一种是通过getopts命令实现。进一步man getopts和网上的资料、发现getopts只支持单字符,即 -c、-s这类,不支持-cmp这个字符串格式 所以我们只能通过case语句手工分析了;2.要比较文件、需要用到diff命令、查看man diff,并且根据...
15066118388:请教,一个用shell循环创建目录的问题
袁话菁循环创建目录的话只要定义一下数字的序号,就可以用for循环mkdir了 因为linux的目录不能重名,所以改数字比改字母简单
15066118388:用shell程序写出一个脚本,内容如下:+输入y,Yyes,Yes中一个,则屏幕上...
袁话菁以下是一个简单的Shell脚本,用于根据用户输入输出问号:使用方法:打开终端或命令行界面;进入脚本所在目录;输入 .\/script.sh(假设脚本文件名为 script.sh)并按回车键;根据提示输入 y、Y、yes 或 Yes 中的一个,并按回车键;如果输入有效,则屏幕上会输出一个问号;否则会提示输入无效。
15066118388:shell脚本问题请教,我想用截取本机的IP,并做成地址池的形式
袁话菁可以使用脚本ping一遍你想要做地址池的IP区间,将返回值非0的IP地址添加到地址池中。给个简单例子 !\/bin\/bash#for i in 10.0.0.{1..255};do ping $i -c 1 -w 1 if [ $? -eq 1 ];then echo $i >> ~\/ip_pool.txt fidone当然这只是大体思路,具体的根据你的实际情况...
15066118388:编shell脚本遇到一个问题,awk能切割掉最后一个字段的值嘛?
袁话菁先设个变量:path=\/usr\/share\/man\/man5\/locale.alias.5.gz 法一,bash中特有的字符串分割法:echo ${path%\/*}\/ 法二,sed中的s替换命令,利用了*在正则中的贪婪特性:echo $path | sed 's#\\(.*\/\\).*#\\1#'法三,awk字段分割重组:echo $path | awk -F\/ '{for(i=1;i<NF;i++...
[ $num -eq 200 ] 两数相等为真
[ $num -ne 200 ] 两数不等为真
[ $num -gt 200 ] 大于200为真
[ $num -ge 200 ] 大于等于200为真
[ $num -lt 200 ] 小于200为真
[ $num -le 200 ] 小于等于200为真
应该是脚本写错了,根本没有-ls这个选项
["$DEST"="y"] 改为
[ "$DEST"="y" ]
注意空格.
["$DEST"="n"] 类似
假如:$1=itm/5.0.0/
1、PAK_PATH=$(echo "$1" | sed 's/\/$//g')
执行结果:PAK_PATH=itm/5.0.0
功能说明:就是用sed命令,如果$1的最后一个字符是/,那么就把/替换为空(即:去掉),因此,输出结果为PRO_VER=itm/5.0.0
2、PRO_VER=$(echo "$1" | sed 's/\/$//g'|awk -F'/' '{print $2}')
执行结果:PRO_VER=5.0.0
功能说明:先用sed命令,把$1的最后一个字符是/去掉,此时为itm/5.0.0,然后,用awk命令,以/为分隔符,输出itm/5.0.0的第2部分,即:5.0.0。
shell基本功能说明:
1、管道 |
|表示管道,意思就是把前一个命令的输出,作为后一个命令的输入。因此:echo "$1" | sed 's/\/$//g',就是echo "$1"的结果作为sed命令的输。
2、命令执行$()
$()代表执行括号内的命令。因此,$(echo "$1" | sed 's/\/$//g')就等同于在shell命令模式下直接输入执行echo "$1" | sed 's/\/$//g'。
PAK_PATH=$(echo "$1" | sed 's/\/$//g')等同于PAK_PATH=`echo "$1" | sed 's/\/$//g'`
3、awk
awk 中的 -F表示分隔符,-F'/'表示以/作为分段分隔符,默认是以空格作为分隔符。
希望能帮助到你,你的好评是我前进的动力!谢谢!
请问一个shell的简单问题,本人刚开始学系。视频
相关评论:
袁话菁假如:$1=itm\/5.0.0\/1、PAK_PATH=$(echo "$1" | sed 's\/\\\/$\/\/g')执行结果:PAK_PATH=itm\/5.0.0功能说明:就是用sed命令,如果$1的最后一个字符是\/,那么就把\/替换为空(即:去掉),因此,输出结果为PRO_VER=itm\/5.0.02、PRO_VER=$(echo "$1" | sed 's\/\\\/$\/\/g'|awk...
袁话菁if 语句:条件语句为真(1),执行条件为真的语句(cat + ls)条件语句为假(0),执行条件为假的语句(cat ...)
袁话菁可能少个符号"$",我的也是这个问题 1 #!\/bin\/bash 2 #从命令行中输入一个数n,统计1+..+n的值是多少 3 4 SUM=0 5 i=0 6 while [ $i -le $1 ]7 do 8 SUM=$[$SUM+$i]9 i=$[$i+1]10 done 11 echo "sum=$SUM"
袁话菁q)echo "quit"a=11 或直接用 break ;;Q)echo "quit"a=11 或直接用 break ;;另外,可以这样写,表示同时匹配两个字母:qQ) xxx ;;
袁话菁!\/bin\/bash file_list="opt\/trap.log \/opt\/Data_Migration.conf \/opt\/test.sh"for i in $file_list do file_size=`du -sh $i`if [[ $file_size > 1 ]]; then echo $file_size fi done ]; 这俩连着 把 -gt 换成 >
袁话菁对传给shell脚本的选项分析通常有两种方法,一种是通过case语句手工分析,另一种是通过getopts命令实现。进一步man getopts和网上的资料、发现getopts只支持单字符,即 -c、-s这类,不支持-cmp这个字符串格式 所以我们只能通过case语句手工分析了;2.要比较文件、需要用到diff命令、查看man diff,并且根据...
袁话菁循环创建目录的话只要定义一下数字的序号,就可以用for循环mkdir了 因为linux的目录不能重名,所以改数字比改字母简单
袁话菁以下是一个简单的Shell脚本,用于根据用户输入输出问号:使用方法:打开终端或命令行界面;进入脚本所在目录;输入 .\/script.sh(假设脚本文件名为 script.sh)并按回车键;根据提示输入 y、Y、yes 或 Yes 中的一个,并按回车键;如果输入有效,则屏幕上会输出一个问号;否则会提示输入无效。
袁话菁可以使用脚本ping一遍你想要做地址池的IP区间,将返回值非0的IP地址添加到地址池中。给个简单例子 !\/bin\/bash#for i in 10.0.0.{1..255};do ping $i -c 1 -w 1 if [ $? -eq 1 ];then echo $i >> ~\/ip_pool.txt fidone当然这只是大体思路,具体的根据你的实际情况...
袁话菁先设个变量:path=\/usr\/share\/man\/man5\/locale.alias.5.gz 法一,bash中特有的字符串分割法:echo ${path%\/*}\/ 法二,sed中的s替换命令,利用了*在正则中的贪婪特性:echo $path | sed 's#\\(.*\/\\).*#\\1#'法三,awk字段分割重组:echo $path | awk -F\/ '{for(i=1;i<NF;i++...