写一个shell命名read -p的脚本
时间: 2024-03-06 15:46:52 浏览: 29
可以使用以下代码实现类似于read -p的功能:
```bash
#!/bin/bash
# 读取用户输入并显示提示信息
read_with_prompt() {
local prompt message
# 获取提示信息
prompt="$1"
message="$2"
# 显示提示信息
if [ -n "$message" ]; then
echo "$message"
fi
# 读取用户输入
read -p "$prompt" input_value
# 返回用户输入
echo "$input_value"
}
# 示例用法
name=$(read_with_prompt "请输入您的姓名:" "欢迎使用read_with_prompt脚本!")
echo "您好,$name!"
```
使用示例:
```
$ ./read_with_prompt.sh
请输入您的姓名:张三
您好,张三!
```
其中,`read_with_prompt()`函数接受两个参数,第一个参数是提示信息,第二个参数是可选的额外说明信息。函数会先显示额外说明信息(如果有的话),然后使用`read -p`读取用户输入。最后,函数会返回用户输入的值。在示例中,我们使用`read_with_prompt()`获取用户的姓名,并在输出中欢迎用户。
相关问题
写一个shell命名read -p的脚本 键值被下面命令所引用
可以使用以下代码实现一个类似于`read -p`的脚本,并将用户输入的值赋给一个指定的变量:
```bash
#!/bin/bash
# 读取用户输入并存储到指定的变量中
read_with_prompt() {
local prompt message variable value
# 获取提示信息和变量名
prompt="$1"
variable="$2"
message="$3"
# 显示提示信息
if [ -n "$message" ]; then
echo "$message"
fi
# 读取用户输入
read -p "$prompt" value
# 将用户输入存储到指定的变量中
eval "$variable=\"$value\""
}
# 示例用法
read_with_prompt "请输入您的姓名:" name "欢迎使用read_with_prompt脚本!"
echo "您好,$name!"
```
这个脚本的用法与`read -p`类似,除了多了一个参数来指定要存储用户输入的变量名。在示例中,我们使用`read_with_prompt`函数读取用户的姓名,并将其存储到`name`变量中。然后我们输出欢迎信息,其中使用了`$name`变量的值。
注意,为了将用户输入的值存储到指定的变量中,我们使用了`eval`命令。这个命令可以执行给定的命令,并将其输出作为结果返回。在这里,我们使用`eval`将一个赋值语句作为命令执行,从而将用户输入的值存储到指定的变量中。
在使用这个脚本时,可以使用`${variable}`语法来引用存储用户输入的变量的值。例如,在示例中,我们使用`$name`来引用存储用户姓名的变量。
shell脚本创建一个工程文件
好的,可以使用以下脚本来创建一个工程文件:
```shell
#!/bin/bash
# 获取用户输入的工程名
echo "请输入工程名:"
read projectName
# 创建工程目录
mkdir $projectName
cd $projectName
# 创建源代码目录
mkdir src
# 创建头文件目录
mkdir include
# 创建编译输出目录
mkdir build
# 创建README文件
touch README.md
# 创建Makefile文件
cat > Makefile << EOF
CC=gcc
CFLAGS=-Iinclude
all: \$(PROJECT_NAME)
\$(PROJECT_NAME): main.o
\$(CC) -o build/\$@ \$^
main.o: src/main.c
\$(CC) \$(CFLAGS) -c -o \$@ \$<
clean:
rm -rf *.o build/\$(PROJECT_NAME)
EOF
# 替换Makefile中的项目名
sed -i "s/PROJECT_NAME =/PROJECT_NAME = $projectName/g" Makefile
echo "工程 $projectName 创建成功!"
```
这个脚本会提示用户输入工程名,然后在当前目录下创建一个以该工程名命名的目录,并在其中创建src、include、build三个子目录,以及README.md和Makefile两个文件。Makefile文件中包含了一个简单的编译规则,可以用来编译工程。