当前位置: 技术问答>linux和unix
刚学习SHELL 根据看到的写了点东西求教
来源: 互联网 发布时间:2016-09-19
本文导语: #!/bin/sh echo 请输入要打印的文件名: read var echo 请输入要打印的文件后缀: read ty for file in $(ls *$var*.$ty); do l=`expr length "$file" - length "$ty" - 1` a=`expr substr "$file" 1 "$l"` cat $file >$a.txt done exit 0 上面这段是我看...
#!/bin/sh
echo 请输入要打印的文件名:
read var
echo 请输入要打印的文件后缀:
read ty
for file in $(ls *$var*.$ty); do
l=`expr length "$file" - length "$ty" - 1`
a=`expr substr "$file" 1 "$l"`
cat $file >$a.txt
done
exit 0
上面这段是我看for命令的时候写的,后来看到字符串截取有另一种方法就改成下面的了
#!/bin/sh
echo 请输入要打印的脚本名:
read var
for file in $(ls *$var*.sh); do
file=`echo ${file%%.*}`
cat $file.sh >$file.txt
done
exit 0
求教着两种写法哪种应该好一点?
————————————————
#!/bin/sh
echo 请输入要替换的脚本名:
read name
until [ -f $name.sh ]
do echo 脚本不存在请重新输入:
read name
done
echo 请输入要替换的符号数量:
read num
until expr $num + 0 1>/dev/null 2>&1
[ $? -eq 0 ]
do echo 输入不合法请重新输入数字:
read num
done
echo `sed s/“/"/g $name.sh`>$name.sh
echo `sed s/”/"/g $name.sh`>$name.sh
exit
我想做一个批量代换文件内某些字符的shell程序用的是sed命令但是结果会取消掉格式变成一行显示,求解决方法,或者有什么其他命令吗?直接用${var//*/*}会报错。shell不知道是否允许用数组我想用两个数组来放我要代换的字符不知道怎么写,如果不能用数组那么循环怎么写比较好? 刚看一个礼拜很多东西不懂 问题可能有点白痴,望解答。
echo 请输入要打印的文件名:
read var
echo 请输入要打印的文件后缀:
read ty
for file in $(ls *$var*.$ty); do
l=`expr length "$file" - length "$ty" - 1`
a=`expr substr "$file" 1 "$l"`
cat $file >$a.txt
done
exit 0
上面这段是我看for命令的时候写的,后来看到字符串截取有另一种方法就改成下面的了
#!/bin/sh
echo 请输入要打印的脚本名:
read var
for file in $(ls *$var*.sh); do
file=`echo ${file%%.*}`
cat $file.sh >$file.txt
done
exit 0
求教着两种写法哪种应该好一点?
————————————————
#!/bin/sh
echo 请输入要替换的脚本名:
read name
until [ -f $name.sh ]
do echo 脚本不存在请重新输入:
read name
done
echo 请输入要替换的符号数量:
read num
until expr $num + 0 1>/dev/null 2>&1
[ $? -eq 0 ]
do echo 输入不合法请重新输入数字:
read num
done
echo `sed s/“/"/g $name.sh`>$name.sh
echo `sed s/”/"/g $name.sh`>$name.sh
exit
我想做一个批量代换文件内某些字符的shell程序用的是sed命令但是结果会取消掉格式变成一行显示,求解决方法,或者有什么其他命令吗?直接用${var//*/*}会报错。shell不知道是否允许用数组我想用两个数组来放我要代换的字符不知道怎么写,如果不能用数组那么循环怎么写比较好? 刚看一个礼拜很多东西不懂 问题可能有点白痴,望解答。
|
ABS,高级Bash脚本编程指南。
http://doc.linuxpk.com/doc/abs/arrays.html
上面的地址就是ABS关于数组的一章
http://doc.linuxpk.com/doc/abs/arrays.html
上面的地址就是ABS关于数组的一章
|
echo `sed s/“/"/g $name.sh`>$name.sh
把操作的文件的结果再定向到该文件 这样的操作有问题 为什么不用sed的-i选项 直接在源文件name.sh里修改即可。
比如sed -i -e 's/“/"/g' $name.sh
另外shell是可以使用数组的。
把操作的文件的结果再定向到该文件 这样的操作有问题 为什么不用sed的-i选项 直接在源文件name.sh里修改即可。
比如sed -i -e 's/“/"/g' $name.sh
另外shell是可以使用数组的。