一堆小小的问题,厚颜来问[高手就不用进来了]

sh/bash/dash/ksh/zsh等Shell脚本
回复
ignorance
帖子: 1
注册时间: 2007-08-30 16:42

一堆小小的问题,厚颜来问[高手就不用进来了]

#1

帖子 ignorance » 2007-08-30 16:53

看了置顶贴后写的一个练习的脚本,执行起来错误不少。。。。

#!/bin/sh
# 复制~/Desktop/test下的新文件到桌面或其他某处
find ~/Desktop/test -mmin 10 >temp # 10min内修改的文件列表存入temp

echo "Select Mode"

select mode in "手动" "桌面"; do # 输出位置 这里会出错,说select怎么怎么的
break
done 这里unexpected
# 按选择
case "$mode" in
"手动")
echo "输入目标文件夹"
read var # 手动输入目的地
[ -f $var ] || mkdir $var;; # 不存在创建
"桌面")
var="~/Desktop";; esac
copy()
{
cp -r $* $var #不知这儿用$*行不行
}
cat temp|copy #还有这儿,这种参数传递方法能否使用
rm temp #收尾
exit 0 #0与1的差别?

注释掉那些以后执行,cp出问题,说目的文件夹怎么怎么

我这点问题学得扎实点的新手都应该知道吧,要骂我的懒啊急功近利啊的朋友就Alt+左箭头算了
上次由 ignorance 在 2007-08-30 18:53,总共编辑 1 次。
头像
alinmn
帖子: 185
注册时间: 2006-05-19 21:42
来自: NIT

#2

帖子 alinmn » 2007-08-30 17:39

Alt+<-原来可以这样用 谢谢lz :)
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#3

帖子 bones7456 » 2007-08-30 17:43

alinmn 写了:Alt+<-原来可以这样用 谢谢lz :)
晕。。。
关注我的blog: ε==3
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#4

帖子 eexpress » 2007-08-30 21:23

送你一个方法。
附件
screenshot-2007-08-30-21-22-50.png
● 鸣学
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15

#5

帖子 iblicf » 2007-08-31 0:20

代码: 全选

#!/bin/bash
find ~/temp/test -type f -mmin -10 > temp
echo "Select Mode ..."

select mode in  "手动" "桌面" ;
do
  break;
done
case "$mode" in
"手动")
   echo "输入目标文件夹"
   read var
[ -f $var ] || mkdir $var
;;
"桌面")
   var="/home/iblicf/Desktop"
;;
esac
copy()
{
cp -r $s $var ;
}

s=`cat temp`
copy
rm temp

exit 0
稍改了一下,函数的参数调用$* 可以么,? $*应该是全局的吧,不清楚,明天再看看,困了睡
头像
stlxv
论坛版主
帖子: 8275
注册时间: 2006-05-03 0:39
来自: المريخ

#6

帖子 stlxv » 2007-09-09 0:54

alinmn 写了:Alt+<-原来可以这样用 谢谢lz :)
PHP是最好的语言!不服来战!
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

#7

帖子 fanhe » 2007-09-12 21:16

$*不是全局的,在函数里的话就是函数的参数
DerekTan
帖子: 33
注册时间: 2007-05-22 10:48
联系:

我也刚开始学shell

#8

帖子 DerekTan » 2007-09-19 23:52

#!/bin/sh
# 复制~/Desktop/test下的新文件到桌面或其他某处
find ~/Desktop/test -mmin 10 >temp # 这里最好加 -type f ,表示是regular file

echo "Select Mode"

select mode in "手动" "桌面"; do # 这里好像没什么问题啊
break
done

case "$mode" in
"手动")
echo "输入目标文件夹"
read var # 手动输入目的地
[ -f $var ] || mkdir $var;; # 这里应该用-d $var,-f是针对文件的,-d是看目录是不是存在,mkdir最好加参数-p,表示递归地创建
"桌面")
var="~/Desktop";; esac
copy()
{
cp -r $* $var #不知这儿用$*行不行
}
cat temp|copy #这里这样用是不行的,需要用xargs,用函数我没有成功,不过可以直接用 cat temp | xargs cp -t $var
rm temp #收尾
exit 0 #0是反馈给系统的,0表示成功,其他表示异常,可以在脚本运行完以后用echo $?来查看
回复