我正在编写一个脚本,如果将参数传递给脚本,该脚本需要创建一个文件。
如果没有传递参数,那么它会询问文件名,但它需要具有 -rwx- --- - ---
的默认权限。
我使用此命令 chmod a=-rwx
删除所有默认权限,然后我使用 chmod u=+rwx
获取所需的权限,但它不起作用。
请问有人可以帮忙吗?
#!bin\bash
if [ $#==0 ]; then
echo "Please enter a file name?"
read fileName
if [ -f $fileName ]; then
echo "File already exist! Opening for Editing"
sleep 3
nano $fileName
else
echo "File created with the name $fileName"
echo "Opening $fileName for editing "
sleep 3
echo "#!bin\bash" >$fileName
nano $fileName
fi
elif [ -f $1 ]; then
echo "File already exists with the name $1"
echo "Opening for editing"
sleep 3
nano $1
else
fileName="$1"
chmod a=-rwx $fileName
chmod u=+rwx $fileName
echo "File created with the name $filename"
echo "Opening $fileName for editing "
echo "#!bin\bash" >$fileName
sleep 3
nano $1
fi
答案 0 :(得分:0)
您的 chmod
语法不正确。操作是 =
将模式设置为特定值,+
添加模式,或 -
删除模式;您不能将它们与 =+
和 =-
结合使用。
您可以对单个文件执行多个操作,方法是用 ,
分隔它们。
所以应该是:
chmod go-rwx,u+rwx "$fileName"
另一个问题:
if [ $#==0 ]
应该
if [ $# -eq 0 ]
使用 -eq
进行数值比较,shell 条件中的运算符周围需要空格。
第三个问题:您在创建文件之前正在执行 chmod
。放在后面
echo "#!/bin/bash" >"$fileName"
第四个问题:#!bin\bash
应该是 #!/bin/bash
。
最后,记住引用你的变量,以防它们包含空格。