当前位置:首页 » 网页前端 » shell脚本注释
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

shell脚本注释

发布时间: 2022-01-18 07:32:29

1. SHell脚本解释:麻烦哪位把下面的代码仔细注释一下,感谢!

list=`ls -l|grep -v grep|grep -v 0|grep -v export.sh|sort -n|awk {'print $9'}`
| 是管道符,将前面命令的执行结果传递给后面的命令。
学会拆分开来看就不难理解,其实可以一步一步地执行看看结果,比如先执行 ls -l ,再执行ls -l|grep -v grep,再执行ls -l|grep -v grep|grep -v 0,看有什么变化。
这句意思就是,将 ls -l 命令的结果中,去除包含grep、0以及export.sh的行,用sort排序后取出第9列内容(即文件名列表),保存到list变量中。后面的arg即为按顺序从文件名列表中取出的每个文件名。

len=${#arg} #get string len
这一句后面已经有注释了,获取arg字符串长度。

tab=${arg:0:len-4} #get filename not include extend name
这句后面也有注释了,获取文件名中除扩展名外的部分。字面解释,就是获取第0个字符到第(长度-4)个字符之间的字符串(扩展名加.一共4个字符)。

echo "bcp ${tab} in /opt/sybase/sdb/ln_data/${arg} -Uname -Ppwd -Sserver -c -t'||' -r'&&\n' -b10 >>./err.txt 2>&1"
打印 echo 后面的语句。语句中的变量被展开。
我觉得这句有问题,最后的输出重定向 >>./err.txt 2>&1 应该拿到双引号外面来,而且如果仅保存错误信息到err.txt的话,应该写成 2>>./err.txt

2. 在shell脚本中,哪个符号表示后面的内容是注释

"#"号;
以“#”开头的行就是注释,会被解释器忽略。

3. shell脚本里语句解释

grep做文本过滤,查找操作
sed做文本替换操作,将 [{}="] 这个[ ]集合中的任意内容,只要出现都替换为空格。
awk筛选出每行的特定字段,$5, $6, $9 $10 $11,打印出来并以空格分隔。
sort排序
uniq去重
结果保存到mk_RTDB-nef.tmp文件。

| 就是个管道符,把上一个命令的处理结果传递给下一个命令继续处理。
要知道每步的结果,可以一个个地尝试:
比如,先试试:
grep ^SERVER /SYSTEM//opf/absolute/lib/system_conf_mlt.txt
再试试:
grep ^SERVER /SYSTEM//opf/absolute/lib/system_conf_mlt.txt \
| sed 's/[{},="]/ /g'
再试试:
grep ^SERVER /SYSTEM//opf/absolute/lib/system_conf_mlt.txt \
| sed 's/[{},="]/ /g' \
| awk '{print $5 " " $6 " " $9 " " $10 " " $11}'

一步步地看输出结果是什么,对整个过程就了然于胸了。

4. 编写满足下列要求的Shell脚本文件,并说明运行该脚本文件的方法( a) 包含一段注释,列出您的姓名、

echo Welcome $USER
echo Date&Time: `date`
echo HOSTNAME: `hostname`
echo "--------------------------------"
ls -a ~
echo "--------------------------------"
echo "ALL PROCESS"
ps -aux
echo "TERM IS:"
echo $TERM
echo "PATH IS:"
echo $PATH
echo "HOME IS:"
echo $HOME
echo "Please, couldn you loan me \$50.00?"
~

你可以把上面的文件保存在一个脚本,然后用/etc/bashrc来调用。

你说的父目录是啥?

5. 编写一个Linux的shell脚本求加注释

#!/bin/bash
#filename:simple-useradd.sh

##(1)只使用一个参数,其他情况在退出后打印一条提示信息
##这个要求有点不明确,这是一个根据提示来执行的脚本,正常应该是不用传递参数的。
if[$#-ne0];
then
echo"Usage:$0"
exit1
fi
##(2)检查/etc/passwd文件,屏幕输出UID的消息
##定义函数DisplayUID
functionDisplayUID(){
cat/etc/passwd
}
##(3)检查/etc/group文件,屏幕输出GID信息
##定义函数DisplayGID
functionDisplayGID(){
cat/etc/passwd
}
##(4)用户从键盘输入信息--新用户的描述、使用shell、UID、GID,并把这些信息分别添加到/etc/passwd、/etc/group、/etc/shadow中,创建用户的主目录/home/***---***为用户名
##定义函数InputNewUser
functionInputNewUser(){
echo"---InputnewuserMenu"
read-p"username:"INusername
read-p"shell:"INshell
read-p"UID:"INUID
read-p"GID:"INGID
echo"开始在/etc/passwd添加帐号信息"
echo"开始在/etc/group添加帐号信息"
echo"开始在/etc/shadow添加帐号信息"
echo"创建用户目录…………"
useradd-s$INshell-u$INUID-g$INGID-m$INusername##useradd用来根据输入,创建新用户
if[$?-ne0];#对添加结果进行判断
then
echo"添加用户出错了"
exit1
fi
}
##(5)设置新用户的密码
##定义SetPassWord
functionSetPassWord(){
localINusername
echo"SetPassWord:"
read-p"username:"INusername
passwd$INusername
}

whiletrue##进入菜单循环
do
cat<<-EOF##打印菜单
1------------DisplayUID
2------------DisplayGID
3------------Inputnewuser
4------------Setpassword
"按Qq退出"
EOF
read-p"choice:???"choice#接收用户输入
case$choicein#根据用户选择来执行相应的函数
1)DisplayUID;;
2)DisplayGID;;
3)InputNewUser;;
4)SetPassWord;;
[Qq])echo"bye";exit0;;
esac
done

这个脚本还有如下问题:

1、”只使用一个参数,其他情况在退出后打印一条提示信息”这个需求不明确,不知道是啥意思,正常情况下,像这种脚本都是不用位置参数的,也可能我不理解题目的意思;

2、脚本还不够严谨,有一些异常没有捕获也没有重定向,不过如果你是交作业的话就问题不大咯。

6. bash脚本的解释

2>/dev/null 是将错误输出重定向到文件/dev/null,/dev/null是由系统维护的一个垃圾站并且自动清空,你可以用cat工具看看,里面是空的。如果你删了这句,错误输出将显示到屏幕。2是一个文件描述符,代表标准错误输出文件,默认为屏幕即/dev/stdout,另外0代表标准输入,1代表标准输出。学Shell推荐你看sobell的“Linux命令、编辑器与shell编程”,不要被一些烂书误导了。

7. linux shell 脚本解释

awk {'print $2'} 是取用空格分割的哪一列,'print $2'输出第二列,也就是tomcat的进程PID,

sed -e "s/^/kill -9 /g":sed文本处理命令,-e说明使用正则表达式,"s/X/Y/g"替换的格式,用Y替换X,把一行的开头(^)用kill -9 替换(注意9后面有个空格,必须)。输出例:kill -9 PID

sh - : -代表标准输入或输出,这里表示标准输入。就是相当于执行$sh kill -9 PID
此整个命令串意思:杀死tomocat进程。

8. 如何对shell脚本进行批量注释

采用下面这种形式:

:<<COMMENTBLOCK
代码行1
代码行2
代码行3
COMMENTBLOCK

注意:第二个COMMENTBLOCK需要顶格写,前面不能有空格。

当然,这两个COMMENTBLOCK也可以替换成任意在被注释代码行中未出现过的字符串。、


其实是利用了Here Documents,将代码段作为空命令 : 的输入。

关于Here Documents,参见:http://linux.die.net/abs-guide/here-docs.html

9. shell脚本读文件如何忽略空行和注释行

可以通过sed命令,将空行和注释行删除掉。

1、以下面的文档内容为例,#号开头的是注释,然后有很多空行,文档名为1.tt。

10. 如何写一个shell脚本,将一个makefile里,没有注释的行注释掉啊。

试试下面这句话,我没测试,大致意思就这样吧,把makefile中所有没注释的都注视掉。
sed -r -i '/^ *[^#]/ s/.*/#&/' makefile