目录脚本中的文件

时间:2016-05-03 05:58:31

标签: linux shell

我编写了一个bash脚本来在给定的目录名中创建一个文件。我写的剧本是:

D=$2
F=$1
D=`cat > "$F" && mkdir -v "$D"`

当我运行脚本传递2个参数文件名和路径名时,它会将文件显示为正在创建,但是当我搜索该文件时,它不会显示在该目录中。

3 个答案:

答案 0 :(得分:1)

您的操作顺序错误:您在创建目录之前创建了该文件。你应该做类似的事情

 mkdir "$D"
 chdir "$D"
 cat > "$F"

答案 1 :(得分:1)

您的订单或创作错误,请使用以下内容:

~/temp5$ ls
script1.bash
~/temp5$ cat script1.bash 
D=$2
F=$1
mkdir -v "$D" && > "$D/$F"
~/temp5$ ./script1.bash newfilename newdirname
mkdir: created directory ‘newdirname’
~/temp5$ ls
newdirname  script1.bash
~/temp5$ ls newdirname/
newfilename
$

这是最终的剧本:

D=$2
F=$1
mkdir -v "$D" && > "$D/$F"

Edit1:

$ ls
script.bash
~/temp5$ cat script.bash 
D=$2
F=$1
[[ "$D$F" =~ ^[a-zA-Z0-9]+$ ]] && mkdir -v "$D" && > "$D/$F"
~/temp5$ ./script.bash newfile123 newdir123
mkdir: created directory ‘newdir123’
~/temp5$ ls
newdir123  script.bash
~/temp5$ ls newdir123/
newfile123
~/temp5$ ./script.bash 'newfile;123' newdir123
~/temp5$ ./script.bash newfile.123 newdir123
~/temp5$ ls
newdir123  script.bash
~/temp5$ ls newdir123/
newfile123
$

这是最终的剧本:

D=$2
F=$1
[[ "$D$F" =~ ^[a-zA-Z0-9]+$ ]] && mkdir -v "$D" && > "$D/$F"

[[ "$D$F" =~ ^[a-zA-Z0-9]+$ ]]确保目录和文件名只包含这些(1个或多个字母数字/数字)字符:a-z,A-Z和0-9使用正则表达式。

答案 2 :(得分:0)

这将在提供的位置

中创建目录和所需名称的空白文件
mkdir -p $2 && touch $2/$1