【Linux Shell脚本编程的注意事项】教程文章相关的互联网学习教程文章

linux – 用于循环通配符匹配目录的shell脚本【代码】

我试图循环通过匹配通配符的目录.这在命令行中工作正常.但是在Shell脚本中不起作用.任何的想法?for dirs in /var/www/html/my.domain.com/v*; do echo $dirs; done;以上命令列出/var/www/html/my.domain.com/v1.0/var/www/html/my.domain.com/v1.2/var/www/html/my.domain.com/v2.0这是Shell脚本版本.它不起作用:dirs=/var/www/html/my.domain.com/v*for dir in $dirsdoecho "$dir"done试过这个:dirs=`/var/www/html/my.domain....

linux – mv包含shell脚本空格的文件【代码】

我试图mv一个文件(重命名它用破折号替换空格).如果我在没有引号的情况下传递source和dest参数,则源会被分解,因为mv认为它是参数的结尾. 如果我用参数包围source和dest,mv报告无法找到源.目前,$1和$2在开头和结尾都有硬编码的报价. $onam和$dnam是没有硬编码报价的等价物. 来自提示的此命令可以正常工作,因为source和dest被引号括起来:mv "/home/bryan/renametest/TestFolder/test file" "/home/bryan/renametest/TestFolder/test-...

linux – 使用不同的用户在另一个shell脚本中运行shell脚本【代码】

我有两个shell脚本: one.shecho "hello" su - oracle -c "sh /tmp/two.sh" echo "good bye"two.shecho "bla bla bla"我想将“one.sh”作为“root”运行并看到此输出:hello bla bla bla good bye怎么可能?解决方法:首先将chmod x设置为脚本 尝试:echo "hello" su - oracle -c /tmp/two.sh echo "good bye"

linux系统下,添加硬盘并挂载到操作系统的shell 脚本范例

#!/bin/sh #新添加硬盘挂载到操作系统 pvcreate /dev/sdb?? / / 一般新添加硬盘都是识别为sdb,当然,也不一定,要具体情况具体分析。 vgcreate datavg /dev/sdb?? // vgcreate? [卷组名] [设备名] lvcreate -L 1700000 datavg?? // lvcreate -L? +要扩容的大小(一般以M或G或T为单位,缺省为M) 【卷组名】 lvrename datavg lvol0 datalv? // 改lv的名字,默认是lvol0 mkdir -p /data??? // 创建挂载的目录。 mkfs.xfs /dev/data...

Shell脚本创建linux用户帐户但密码出错【代码】

我编写了一个shell脚本来创建用户帐户.该脚本从文本文件中读取用户帐户名和密码,并使用这些信息创建帐户.当我执行脚本时,它成功创建了帐户,但是当我尝试登录这些帐户时由于密码无效而无法登录,请再次尝试错误. 这是我用来创建用户帐户的脚本:file_name="t.txt"while read user pass douseradd -p ${pass} ${user} done < $file_name编辑-1:t.txt文件包含用户帐户信息:空格分隔的每行用户名和密码.这是文件的片段:user1 abcXYZ ...

如何在Linux上的shell脚本中将UTC转换为本地时间【代码】

我有一个格式的字符串20110724T080000Z我想在Linux上的shell脚本中将其转换为本地时间.我认为我只是可以将它作为日期输入,但我似乎无法告诉日期我的输入日期具有什么格式. 这个date -d "20110724T080000Z" -u会让约会抱怨date: invalid date `20110724T080000Z'另外,形式为“20110724T080000Z”的格式是什么?我试图谷歌它没有成功.解决方法:这是合并日期和时间的ISO8601 “basic format”. date似乎无法解析20110724T080000Z,但是...

linux – tcpdump在shell脚本中捕获任何内容【代码】

我想启动一个TCP程序并捕获相关的数据包,我的shell脚本cap.sh如下:sudo tcpdump -i eth0 -w mypcap &sleep 3./tcp_receiversleep 2x=`ps -ef|grep "tcpdump"|grep -v "grep"|awk '{print $2}'`sudo kill -9 $x我运行cap.shsudo ./cap.sh所以实际上在这个shell中,我可以在没有密码的情况下运行sudo并且主机只是远程机器上的虚拟切片(PLanetlab节点)虽然我可以从ps -ef看到进程tcpdump它什么也没捕捉到在cap.sh完成后,我看到mypcap文...

linux – shell脚本中的递归【代码】

我正在学习Linux命令,我正在练习并尝试编写一个基本的shell脚本,它使用递归列出子文件夹中的所有文件和文件,如ls *.#!/bin/bash# list-all: one command to list them all!!!!listit () {if [ -d "$1" ]thenlistit "$1"elseecho "$1"fi }ls | while read items; dolistit "$items" done但结果显示:./list-all: line 16: 1101 Done ls1102 Segmentation fault: 11 | while read items; dolistit "$items"; ...

Linux Bash shell脚本中的IO重定向无法重新创建已移动/已删除的文件?【代码】

我对Linux上的shell编程很新,在我的Linux实例中,我正在以下列方式将程序的stdout和stderr重定向到两个文件并在后台运行它myprog > run.log 2>> err.log &这很好,我得到了我想要的行为 现在有另一个后台进程监视run.log和err.log,如果日志文件超过某个阈值,则将它们移动到其他文件名. 例如mv err.log err [date-time] .log 我的期望是,在此文件移动发生后,myrog输出重定向将再次创建err.log,新输出将写入该新文件.但是,在我的日志文...

linux – 比较shell脚本中的文件大小【代码】

我正在尝试比较shell脚本中两个文件的大小,但我得到一个测试:32:8:意外的运算符错误.I=`wc -c $i | cut -d' ' -f1` J=`wc -c $j | cut -d' ' -f1` if test $I == $J thenecho $i $j >> $1.pares fi我使用echo测试$I和$J中的值,值是正确的,但我无法比较它们…解决方法:尝试使用方括号([])和-eq,如下所示:I=`wc -c $i | cut -d' ' -f1` J=`wc -c $j | cut -d' ' -f1` if [ $I -eq $J ] then ? ? ? echo $i $j >> $1.pares fi

linux shell脚本的编写---003 shell脚本 变量【图】

shell脚本的变量 定义变量 直接输入 变量名=值 即可 注意: 变量名和等号之间不能有空格,有空格会报错,这可能其他的编程语言都不一样。 同时,变量名的命名须遵循如下规则: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。使用变量 只需要在变量前面加上 美元符$就可以使用变量啦 如图 输...

linux – Shell脚本从所有文件中提取2个值?【代码】

我有一个充满这样的文件的目录:[Location] state=California city=Palo Alto[Outlet] id=23 manager=John Doe我想写一个小脚本,为每个文件输出一行,如下所示:John Doe,Palo Alto我怎么做?我怀疑有些grep和循环.到目前为止,我有:#!/bin/bash echo Manager,City > result.txt for f in *.config docat "$f" | grep manager= >> result.txtcat "$f" | grep city= >> result.txt done但这当然是不完整的,因为grep在自己的行上返回整...

linux初始化shell脚本【代码】

#!/bin/bash # this is a init script ping -c 1 -i 0.1 -W 1 baidu.com a=`echo $?` if [ ${a} == 0 ];thenecho "network success" elseecho "network failer"exit 2 fi systemctl stop firewalld systemctl disable firewalld sed -i s/^SELINUX=enforcing/SELINUX=disable/ /etc/selinux/config hn=master1.localdomain hostnamectl set-hostname ${hn} yum install -y wget 2>&1 # ----------------------------- mkdir /tmp/...

linux shell脚本 if eles

条件结构(if)if 判断条件;then 条件为真的分支代码fi一切都以返回状态码是否为0为判决条件。如果执行结果的退出状态码为0,执行,不然就执行else部分小试牛刀-if-else实例#交互式判断年龄大于50为old man,小于等于50位young man#!/bin/bashread -p "please input your age!:" ageif [[ ! "$age" =~ ^[0-9]+$ ]] ;then echo "please input a digit" exit 2elif [ "$age" -gt 50 ];then echo "old man"e...

linux – 更改目录在shell脚本中不起作用【代码】

我一直在改变linux中shell脚本中的目录.#!/bin/sh cd /driver以上内容不会更改目录.Shell正在自己的上下文中运行,因此无法为linux终端提供更改的驱动器(进入驱动程序) 但如果我给 cd / driver LS它在驱动程序目录中提供了正确的ls输出,这些输出又来自驱动程序目录 任何人都可以帮助我获得实际更改路径的终端(进入驱动程序).解决方法:如果您运行脚本 ./scriptname 您正在打开执行脚本命令的子shell.更改该子shell中的目录不会...