【发布时间】:2018-03-10 09:12:08
【问题描述】:
我编写了一个 shell 脚本来创建许多文件。用户从命令行指定文件的数量及其文件扩展名。这是我的代码
#!/bin/bash
NUM_FILES=0
FILE_TYPES=""
LOCATION=`pwd`
if [ $# -eq 0 ]; then
echo "**** ERROR: You must specify the number of files you wish to create and (optional) the file types.\n\n"
exit 1
fi
if [ ! -z $1 ]; then
NUM_FILES=$1
fi
if [ ! -z $2 ]; then
FILE_TYPES=$2
else
FILE_TYPES=".tmp"
fi
n=$NUM_FILES
for (( i=1; i <= n; i++ ))
do
touch TEMP_FILE_$i.$FILE_TYPES #Files created here - this is where my script needs work
echo "Created file " TEMP_FILE_$i.$FILE_TYPES
done
我的问题与创建指定类型的文件有关。传递给命令行的第二个参数 ($FILE_TYPES) 用于指定要使用的扩展名(txt、java、py 等),但是当我运行脚本时,Linux 将所有文件解释为文本类型,并且只是将扩展名添加到文件名的末尾。
例如,运行bash createFiles.sh 4 java 将导致创建四个名为TEMP_FILE_1.java 的文本文件,但在Linux GUI 中查看目录会显示类型为text 的文件。
如何修改 shell 脚本以创建指定类型的文件?
【问题讨论】:
-
我刚刚测试了您的脚本,它完全符合您的要求。您可以在控制台中尝试“ls -lh”并显示输出吗?
-
if [ ! -z $1 ]; ...真是自找麻烦。写NUM_FILES=${1:-0}; FILE_TYPES=${2:-.tmp} -
嗨,William - 我对 shell 脚本比较陌生,所以我能问一下为什么该语句会自找麻烦吗?它旨在检查以确保传递给脚本的第一个参数不为空
-
请阅读How does accepting an answer work?。不要在问题标题中写上“已解决”这个词。