shell编程代码思路: #键盘输入用户名,赋值给变量 #如果输入的用户名为空,则报错退出 #截取账户信息的uid #判断uid是否存在,如果不存在,错误提示 #判断uid,如果大于1000,则为普通用户,否则为系统用户
时间: 2024-04-06 18:32:09 浏览: 48
你的代码思路是正确的,下面是一个简单的 shell 脚本示例,用于实现你描述的功能:
```shell
#!/bin/bash
read -p "请输入用户名:" username
if [[ -z "$username" ]]; then
echo "用户名不能为空"
exit 1
fi
uid=$(id -u "$username" 2>/dev/null)
if [[ -z "$uid" ]]; then
echo "用户不存在"
exit 1
fi
if (( uid > 1000 )); then
echo "普通用户"
else
echo "系统用户"
fi
```
这个脚本会先让用户输入用户名,如果用户名为空,则报错并退出。接着,脚本会使用 `id` 命令来获取用户的 UID,如果该用户不存在,则报错并退出。最后,脚本会判断用户的 UID 是否大于 1000,如果是,则输出“普通用户”,否则输出“系统用户”。
相关问题
请使用shell实现以下功能 0.请输出邮箱,并将输入得邮箱赋值给:CI_Email,将@之前得用户名赋值给:CI_name 1.给出选项序号1深圳 2成都 3北京,等待输出得序号,并将对应序号得值,赋值给CI_Site 2.依次执行: git config --global user.name $CI_name git config --global user.email $CI_Email ssh-keygen -t rsa 当执行cat ~/.ssh/id_rsa.pub后,需要执行回车才能继续往下执行
以下是使用Shell脚本实现您所需功能的示例代码:
```shell
#!/bin/bash
# 输出邮箱并读取用户输入的邮箱
echo "请输入邮箱:"
read -r CI_Email
# 提取邮箱中@之前的用户名并赋值给CI_name
CI_name="${CI_Email%%@*}"
# 给出选项序号
echo "选项序号: 1深圳 2成都 3北京"
# 等待用户输入选项序号,并将对应的值赋给变量CI_Site
read -r option
case $option in
1) CI_Site="深圳";;
2) CI_Site="成都";;
3) CI_Site="北京";;
*) echo "无效的选项"; exit 1;;
esac
# 执行git配置命令,并生成SSH key,然后等待用户按回车键继续执行
git config --global user.name "$CI_name"
git config --global user.email "$CI_Email"
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
read -r -p "按回车键继续..."
```
在上面的示例中,首先使用`echo`命令输出提示信息并等待用户输入邮箱,并将输入的邮箱赋值给变量`CI_Email`。
然后,使用字符串截取`${CI_Email%%@*}`提取邮箱中@之前的用户名,并将结果赋值给变量`CI_name`。
接着,使用`echo`命令输出选项序号:1深圳、2成都和3北京,并使用`read`命令等待用户输入选项序号,并根据用户输入的序号使用`case`语句将对应的值赋给变量`CI_Site`。
然后,依次执行`git config --global user.name $CI_name`和`git config --global user.email $CI_Email`命令来配置Git全局用户名和邮箱。
接下来,执行`ssh-keygen -t rsa`命令生成SSH key。
最后,使用`cat ~/.ssh/id_rsa.pub`命令输出SSH公钥,并使用`read -r -p "按回车键继续..."`命令等待用户按回车键继续执行。
请注意,上述代码中的变量`CI_Email`和`CI_name`分别存储用户输入的邮箱和提取的用户名。
shell脚本 使用正则表达式“=[\s\S]*?#”截取a字符串,赋值给b字符串
你可以使用正则表达式和`sed`命令来截取字符串并赋值给另一个变量。假设你的原始字符串是`a`,你可以将匹配的部分截取出来并赋值给变量`b`,以下是一个示例的shell脚本:
```bash
#!/bin/bash
a="This is a test string # with some comments"
regex="=[\s\S]*?#"
# 使用正则表达式截取字符串并赋值给b
b=$(echo "$a" | sed -n "s/.*$regex/\0/p")
echo "原始字符串: $a"
echo "截取的字符串: $b"
```
运行以上脚本,它将输出:
```
原始字符串: This is a test string # with some comments
截取的字符串: = with some comments
```
这个脚本中,我们使用`sed`命令和正则表达式来匹配字符串中的子串,并将其赋值给变量`b`。`-n`选项用于禁止默认输出,`s/.*$regex/\0/p`用于匹配整个字符串中满足正则表达式的部分,并打印出来。
阅读全文