首先 在命令前面有个 '#'的意思是本句话是注释,并不实际执行...
成都创新互联是专业的醴陵网站建设公司,醴陵接单;提供成都网站设计、成都做网站、外贸网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行醴陵网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
再说你后面语句的意思,for ... in .... ; done是循环结构,ls是查看目录下的文件,su是以另一个身份($i),来运行一个shell,但问题是su 没有-sh选项,也就是说你这句话应该有问题才对.
整体分析是遍历将当前目录下的文件,每个文件执行su -sh XXX(这里XXX是当前目录下的所有文件),功能尚不明确,还请楼主明示.
题主你好,
前提: 我们知道每个进程运行后,系统都会分配给其一个id号,这个id号和进程是关联的,我们可以通过操作该id来实现操作对应进程的目的,如通过id杀死进程等.
$!很多人解释为后台运行的最后一个进程的id号(我觉得解释为最近一次后台运行的id号更容易理解). 举个例子说一下吧,这样更直观一点.
我们先准备一个简单的脚本1.sh, 里面内容很简单,就是睡眠100秒:
下面我们在后台运行这个脚本,看一下$!的输出结果:
从上图可以看出, 脚本运行后,系统分配给它的进程id是54821, 后面我们连续输出三次$!,得到的结果是一样的,都是54821. 因为1.sh这个脚本就是我们最近一次后台运行的脚本,所以此时无论输出多少次$!结果都是一样的.
-----
接下来, 我们再运行一个内容同1.sh相同的2.sh:
可以看到, $!的输出结果变为了54860,不再是上面的54821. 因为此时2.sh是我们最近一次后台运行的脚本,因此,$!结果变为了54860.
=====
希望可以帮到题主, 欢迎追问.
1、for FILE in $(ls); do [COMMAND]; done
2、for a in {1..100}; do echo $RANDOM; done
3、for (( c=1; c=5; c++ )); do echo $RANDOM; done
4、for ((c=1; c21; c+=2)); do echo "Welcome $c times" ; done
5、for line in $(cat user.txt); do getent shadow $line; done
6、for FILE in $(cat file); do tar zcf $FILE.tar.gz $FILE;rm -rf $FILE; done
7、# awk计算所有行所有区域的总和
awk '{for (i=1; i=NF; i++) s=s+$i}; END{print s}'
如下文件名批量修改:
202007070923_12345678.txt
202007070923_23456789.txt
使用命令:
for name in 2020*.txt; do mv "$name" "${name#*_}"; done
命令解析:
#*_为删除第一个"_"符号左边的所有字符(包括第一个"_");
整体命令为:循环查找2020开头的txt文件,并将文件名只保留第一个"_"符号后面的部分.