我编写了一个bash脚本来在给定的目录名中创建一个文件。我写的剧本是:
D=$2
F=$1
D=`cat > "$F" && mkdir -v "$D"`
当我运行脚本传递2个参数文件名和路径名时,它会将文件显示为正在创建,但是当我搜索该文件时,它不会显示在该目录中。
答案 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