Bash读取-p不起作用

时间:2018-02-11 02:17:33

标签: linux bash shell

运行我的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的不同版本的读取行。任何帮助,将不胜感激。我甚至尝试在输入的单独行上添加它。

编辑:将文件更新到输入所需的位置,但问题是输入未通过脚本的其余部分使用。因此导致找不到目录的错误。

2 个答案:

答案 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实用程序,您也可以使用它来删除这些回车。