[求助]编写shell程序的时候,如何让用户输入文件的路径,然后储存至某个变量,然后在读取出来?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
jin0828
帖子: 193
注册时间: 2007-09-04 5:23
来自: 福建福州
联系:

[求助]编写shell程序的时候,如何让用户输入文件的路径,然后储存至某个变量,然后在读取出来?

#1

帖子 jin0828 » 2015-05-24 10:30

shell脚本的教材真心难懂,看了好多了,大多数只告诉你某个脚本,某个指令都有什么作用,给出的实例更是让我这种菜鸟看不明白,遇到问题,本着求助论坛大神的精神来论坛里问问:

问题是这样的,例如,我有一台主机,常年挂bt,在downloads文件夹中下载了很多的电影,音乐,还有软件什么的,时间长了,我想整理一下,使用了很久的linux,就知道大神都是一条命令搞定的,所以我也学着折腾起来,参考了很多资料,我知道

代码: 全选

find . -name "*.mp4" -exec mv {} /media/yj/01D5-0635/xxx/ \;
这样的命令可以一次性搜索文件夹包含子文件夹下所有的mp4文件移动到某个目录里,同时

代码: 全选

#!/bin/bash
find . -name "*.mp4" -exec mv {} /media/yj/01D5-0635/xxx/ \;
find . -name "*.mkv" -exec mv {} /media/yj/01D5-0635/xxx/ \;
find . -name "*.avi" -exec mv {} /media/yj/01D5-0635/xxx/ \;
find . -name "*.rmvb" -exec mv {} /media/yj/01D5-0635/xxx/ \;
这样的脚本也可以一次性移动你指定的某些类型的文件移动到你指定的目录。[/color]

到这里,问题来了,我在想,是否可以采用脚本执行前,用户输入一个路径,存入到一个变量,然后让find到的文件移动到用户输入的路径下的文件夹中去呢?

比如用户输入/home/xx/1则find . -name "*.mkv" -exec mv {} /home/xx/1/ \;
如果用户输入/home/xx/2则find . -name "*.mkv" -exec mv {} /home/xx/2/ \;

查阅了好几本教材,完全没有头绪,又不能和c语言一样scanf,感觉完全是两种概念。于是真的有些看不懂了,求大神给写个实例,让我好好学习体会一下。。。。
内练一口气,外练一口屁,不内不外练志气!
头像
tracyone
帖子: 866
注册时间: 2010-11-19 14:25
系统: 乌班图
来自: onetracy.com
联系:

Re: [求助]编写shell程序的时候,如何让用户输入文件的路径,然后储存至某个变量,然后在读取出来?

#2

帖子 tracyone » 2015-05-24 11:02

代码: 全选

read  -p  "提示语...." user_input
user_input
就是你要处理的变量
头像
sunfish
帖子: 989
注册时间: 2008-05-03 1:53

Re: [求助]编写shell程序的时候,如何让用户输入文件的路径,然后储存至某个变量,然后在读取出来?

#3

帖子 sunfish » 2015-05-24 11:37

用参数呗:./test.sh filename todir

代码: 全选

#!/bin/bash

[[ "w$1" == "w" ]] && echo "Usage: $0 filename todir" && exit 0
[[ "w$2" == "w" ]] && echo "Usage: $0 filename todir" && exit 0
find . -name "$1" -exec mv {} $2 \;

exit 0
docker && kubernetes
头像
jin0828
帖子: 193
注册时间: 2007-09-04 5:23
来自: 福建福州
联系:

Re: [求助]编写shell程序的时候,如何让用户输入文件的路径,然后储存至某个变量,然后在读取出来?

#5

帖子 jin0828 » 2015-05-26 0:28

tracyone 写了:

代码: 全选

read  -p  "提示语...." user_input
user_input
就是你要处理的变量
谢谢,大神的指点。
内练一口气,外练一口屁,不内不外练志气!
头像
jin0828
帖子: 193
注册时间: 2007-09-04 5:23
来自: 福建福州
联系:

Re: [求助]编写shell程序的时候,如何让用户输入文件的路径,然后储存至某个变量,然后在读取出来?

#6

帖子 jin0828 » 2015-05-26 0:30

sunfish 写了:用参数呗:./test.sh filename todir

代码: 全选

#!/bin/bash

[[ "w$1" == "w" ]] && echo "Usage: $0 filename todir" && exit 0
[[ "w$2" == "w" ]] && echo "Usage: $0 filename todir" && exit 0
find . -name "$1" -exec mv {} $2 \;

exit 0
大神一句话,我要读十年啊。。。。未了这一段,翻了1天的书。。。才弄明白每一段的作用
内练一口气,外练一口屁,不内不外练志气!
回复