㈠ Linux bash脚本
forfilenamein`ls-F`
do
if[[$filename=~(.*/$)]]then
echo"$filename">>/tmp/dir.txt
else
echo"$filename">>/tmp/files.txt
fi
done
㈡ linux下怎么运行bash脚本
linux下运行bash脚本的方法如下:
1.
首先在桌面右键点击,选择在终端中打开,打开命令行;
2.
在命令行中输入
cd
脚本路径,进入脚本所在目录;
3.
使用chmod
+x
脚本名命令给文件添加可执行权限;
4.
使用sh
脚本名或者
./脚本名的方法来运行bash脚本。
㈢ linux中使用 . / 执行和 bash 执行脚本的困惑
.是表示在当前shell中执行脚本。所以会在当前的shell界面看到提示。
#!/usr/bin/bash 则是另开了一个shell执行脚本,所以看不到提示。
至于另开脚本是否会覆盖还没有测试过。
但是考虑可能会覆盖的情况 ,因该编写一个if 【】进行文件是否存在的测试。如果文件存在,进行判断是跳过还是覆盖。
否则文件不存在,则直接复制。
㈣ bash编程中怎么对脚本换行
在bash脚本中可以使用echo对输入内容进行换行或者使用反斜杠对脚本命令进行换行:
1、使用echo -e可以对输出内容进行换行输出,例如:
echo-e"abc bcd dsws"
将会输入:
abc
bcd
dsws
注意:使用echo -n将会忽略输入语句中的 换行符。
2、当脚本中命令太长的时候,一行不能完成写下,或者太长影响脚本代码的美观性,可以使用对一个命令进行换行执行:
./configure--prefix=/usr/local/softname--enable-xxx-enable-yyy--enable-zzz--enable-aaa-enable-bbb--enable-ccc--enable-mmm-enable-nnn--enable-ppp--enable-qqq
使用换行书写:
./configure--prefix=/usr/local/softname
--enable-xxx-enable-yyy--enable-zzz--enable-aaa
-enable-bbb--enable-ccc--enable-mmm-enable-nnn
--enable-ppp--enable-qqq
㈤ bash shell脚本编程问题
[ ! -e filename1 -a ! -e filename2 ] 两个文件同时不存在
!
"非"
-a
逻辑与
exp1 -a exp2 如果表达式exp1和exp2都为真的话, 那么结果为真.
-o
逻辑或
exp1 -o exp2 如果表达式exp1和exp2中至少有一个为真的话, 那么结果为真.
这与Bash中的比较操作符&&和||非常相像, 但是这个两个操作符是用在双中括号结构中的.
[[ condition1 && condition2 ]]
-o和-a操作符一般都是和test命令或者是单中括号结构一起使用的.
[ "$exp1" -a "$exp2" ]
㈥ 求写一个bash脚本
脚本如下。
#!/bin/bash
# default
ip=192.168.168.168
count=3
if [ $# -eq 2 ]; then
[[ $1 =~ ^([0-9]+\.){3}[0-9]+$ ]] && ip=$1
[[ $2 =~ ^[0-9]+$ ]] && count=$2
elif [ $# -eq 1 ]; then
if [[ $1 =~ ^([0-9]+\.){3}[0-9]+$ ]]; then
ip=$1
elif [[ $1 =~ ^[0-9]+$ ]]; then
count=$1
fi
fi
ping -n $count $ip >>$(date +%Y-%m-%d-%H-%M-%S).log
[ $? -ne 0 ] && 这里写restart pppd的代码
exit 0
说明:
1)运行脚本时可以带两个参数,第一个指示ip,第二个指示ping的次数;若输入不符合格式要求,使用默认值。
2)若只提供了一个参数,脚本自动根据格式判断是ip还是ping的次数;另一个使用默认值。
3)若提供的参数个数超过两个,只取前两个,格式判断参见1)。
4)若没有提供参数,都使用默认值。
5)因为没用过pppd,所以重启pppd的代码由你自行补上。
㈦ bash脚本for循环报错
1)把你的脚本修改如下:
$catx.sh
#!/bin/bash
foriin{1..4};
do
read-p"pleaseinputuseraccount:"username
stty-echo
read-p"pleaseinputpassword:"password
sttyecho
echo-e\n
if["$username"=="summit"]&&["$password"=="hisummit"];then
echo"correctuser,correctpassword,welcome!"
break
else
echo"wronguser,or/andwrongpassword,pleasetryagain."
fi
done
if[$i-eq4];then
exececho"wronguser/password,bye-bye"
fi
echo"WelcometousethisLinuxmachine"
echo"......"
......脚本中后面的命令可以继续运行
2)执行脚本,输入正确的用户名和密码:
$x.sh(或者执行./x.sh)
pleaseinputuseraccount:summit
pleaseinputpassword:
correctuser,correctpassword,welcome!
WelcometousethisLinuxmachine
......
......脚本中后面的命令可以继续运行
脚本中for循环后面的命令可以继续运行。
3)执行脚本,连续4次输入错误的用户名和密码(要么都错,要么用户名和密码其中错一个):
$x.sh(或者执行./x.sh)
pleaseinputuseraccount:abcd
pleaseinputpassword:
wronguser,or/andwrongpassword,pleasetryagain.
pleaseinputuseraccount:summiitt
pleaseinputpassword:
wronguser,or/andwrongpassword,pleasetryagain.
pleaseinputuseraccount:peter
pleaseinputpassword:
wronguser,or/andwrongpassword,pleasetryagain.
pleaseinputuseraccount:summitt
pleaseinputpassword:
wronguser,or/andwrongpassword,pleasetryagain.
wronguser/password,bye-bye(这里就bye-bye了,for循环后面的命令不能执行了)
打印出wrong user/password, bye-bye之后,脚本结束了,for循环后面的命令不能执行了。
供参考,谢谢!
㈧ bash脚本的解释
2>/dev/null 是将错误输出重定向到文件/dev/null,/dev/null是由系统维护的一个垃圾站并且自动清空,你可以用cat工具看看,里面是空的。如果你删了这句,错误输出将显示到屏幕。2是一个文件描述符,代表标准错误输出文件,默认为屏幕即/dev/stdout,另外0代表标准输入,1代表标准输出。学Shell推荐你看sobell的“Linux命令、编辑器与shell编程”,不要被一些烂书误导了。
㈨ linux学习bash脚本的一些困惑
linux脚本是很多个空格当成一个空格来识别,你这种情况还真不遇到过,有可能是你系统用的bash的版本和种类不同造成的
㈩ linux命令行下,怎么关闭正在执行的bash脚本
killall 脚本名
就算屏幕上在一直打印,你只管输入(盲输或复制粘贴过来),完成后一个回车ok。
哪怕输入的东西在屏幕上显示时会被输出搅乱,但实际是会被终端接收到标准输入管道的。这个方法我刚刚也试过了,是可以的。
上面的用于后台运行情况。前台运行一般ctrl+c是可以终止的。