运行我的shell脚本时出现此错误:
': not a valid identifiere 17: read: `
这是我的shell脚本:
#!/usr/bin/env bash
# Mr. Robot Install Wordpress Script
# Script is used for the following:
# add user to server
# change to new user home directory
# download latest version of wordpress
# unzip wordpress
# move all files up a directory level
# move up a directory level
# delete wordpress.zip
# remove wordpress folder
echo "/*****************************************************/"
echo "/************** HELLO MR. ROBOT **********************/"
echo "/*****************************************************/"
echo ".."
echo ".."
echo "Website URL"
echo 'url: \r'
read -p $website
echo 'User: \r'
read -p $newuser
echo 'Pass: \r'
read -p $password
echo "creating account......"
/scripts/wwwacct $website $newuser $password 0 x3 n n n 0 0 0 0 0 0
echo "Changing Directory....."
cd ~/home/$newuser/
echo "Getting Latest Version of Wordpress!"
curl -O http://wordpress.org/latest.tar.gz
echo "Tarball Incoming!!"
tar xvzf latest.tar.gz
echo "removing tar file"
rm latest.tar.gz
echo "moving wordpress folders!"
cp -a ~/home/$newuser/public_html/wordpress/. ~/home/$newuser/public_html/
cd /home/$newuser/public_html/
echo "Part 01 Complete!!"
exit
我尝试使用-p或-e的不同版本的读取行。任何帮助,将不胜感激。我甚至尝试在输入的单独行上添加它。
编辑:将文件更新到输入所需的位置,但问题是输入未通过脚本的其余部分使用。因此导致找不到目录的错误。
答案 0 :(得分:1)
不要引用变量名称。 read
需要要分配的变量的名称,而不是值,如果您有美元符号$
,则会获得该值。
read -p 'website url: ' website
read -p 'Username: ' newuser
read -p 'Password: ' password
看起来其中一个变量包含\r
,一个回车符。 bash尝试打印的错误消息类似于:
bash: ./script: line 17: read: `\r': not a valid identifier
但是\r
会导致光标返回到行的开头,导致': not a valid identifier
覆盖消息的开头。
答案 1 :(得分:0)
如上所述,John Kugelman,如果您必须检查Input_file是否有回车符,那么您可以运行以下命令:
cat -v Input_file
如果您找到它们,请尝试从以下任一cmmands中删除它们:
tr -d '\r' < Input_file
OR
awk '{gsub(/\r/,"")} 1' Input_file
或者检查您的系统(盒子)是否有dos2unix
实用程序,您也可以使用它来删除这些回车。