sh/bash/dash/ksh/zsh等Shell脚本
-
zcf115
- 帖子: 398
- 注册时间: 2009-06-28 10:06
- 系统: ubuntu12.04
#1
帖子
由 zcf115 » 2013-05-04 11:06
代码: 全选
#!/bin/bash
if [ "$#" -ne "0" ];then
echo "Error:Must no argument."
exit 1
fi
read -p "Please input the directory: " mp3dir
cd ${mp3dir:=/home/ubuntu}
mp3s=(`ls | grep mp3`)
if [ "${#mp3s[@]}" -eq "0" ];then
echo "Error:There is no mp3 in this directory."
exit 2
fi
echo ${#mp3s[@]}
for mp3 in "${mp3s[@]}";do
echo ${mp3/.*}
done
求助啊,我ubuntu目录下有诸如 a.mp3、b c.mp3(中间为空格)等好多mp3文件,脚本会将 b c.mp3 识别为两个文件,b、c.mp3,如何更改呢。
Still Alive
-
cao627
- 帖子: 992
- 注册时间: 2007-12-05 10:57
- 系统: ubuntu14.04
- 来自: 金山
#3
帖子
由 cao627 » 2013-05-04 12:47
代码: 全选
for mp3 in *.mp3;do
echo ${mp3/.*} ###我这边环境好像加不加双引号没区别.
done
用数组的话:
mp3s=(`ls | grep mp3`) 替换为 eval mp3s=(`ls -Q *.mp3`)
上次由
cao627 在 2013-05-04 13:05,总共编辑 1 次。
-
zcf115
- 帖子: 398
- 注册时间: 2009-06-28 10:06
- 系统: ubuntu12.04
#4
帖子
由 zcf115 » 2013-05-04 13:02
主要是想用下数组,结果还用不了。
Sent from my Lenovo A710e using Tapatalk 2
Still Alive
-
cao627
- 帖子: 992
- 注册时间: 2007-12-05 10:57
- 系统: ubuntu14.04
- 来自: 金山
#5
帖子
由 cao627 » 2013-05-04 13:06
zcf115 写了:主要是想用下数组,结果还用不了。
Sent from my Lenovo A710e using Tapatalk 2
用数组的话:
mp3s=(`ls | grep mp3`) 替换为 eval mp3s=(`ls -Q *.mp3`)
-
zcf115
- 帖子: 398
- 注册时间: 2009-06-28 10:06
- 系统: ubuntu12.04
#6
帖子
由 zcf115 » 2013-05-04 13:35
好的哦。我试下。
Sent from my Lenovo A710e using Tapatalk 2
Still Alive
-
zcf115
- 帖子: 398
- 注册时间: 2009-06-28 10:06
- 系统: ubuntu12.04
#7
帖子
由 zcf115 » 2013-05-04 17:01
行了。
Sent from my Lenovo A710e using Tapatalk 2
Still Alive
-
zcf115
- 帖子: 398
- 注册时间: 2009-06-28 10:06
- 系统: ubuntu12.04
#8
帖子
由 zcf115 » 2013-05-05 11:17
不过为啥换种方法就行了呢。
Sent from my Lenovo A710e using Tapatalk 2
Still Alive
-
aerofox
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
#9
帖子
由 aerofox » 2013-05-05 20:52
zcf115 写了:不过为啥换种方法就行了呢。
因为 ls 帮你加引号了。
不知你编写这个脚本的目的是什么,是为了学习还是解决问题。为了学语法没什么可说的,为了解决问题的话,没必要弄得这么复杂。cd 命令之后直接 for 循环就可以了:
代码: 全选
for mp3 in *.mp3; do
echo "${mp3/.*}"
done
-
zcf115
- 帖子: 398
- 注册时间: 2009-06-28 10:06
- 系统: ubuntu12.04
#10
帖子
由 zcf115 » 2013-05-05 23:34
主要是想试下数组和字符串删除的功能。
Sent from my Lenovo A710e using Tapatalk 2
Still Alive
-
aerofox
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
#11
帖子
由 aerofox » 2013-05-06 6:17
zcf115 写了:主要是想试下数组和字符串删除的功能。
代码: 全选
mp3s=( *.mp3 )
for mp3 in "${mp3s[@]}";do
echo "${mp3/.*}"
done