我的程序中有一个变量v,它可以从值集中获取任何值
"a", "b", "c", ..., "z"
Run Code Online (Sandbox Code Playgroud)
而我的目标是只有当执行一些说法v是不"x","y"或"z".
我试过了,
对于类C语言(其中相等运算符比较实际的字符串值;例如.c#,javascript,php)
if (v != "x" || v != "y" || v != "z")
{
// the statements I want to be executed
// if v is neither "x", nor "y", nor "z"
}
Run Code Online (Sandbox Code Playgroud)用于Pascal类语言(例如plsql)
IF (v != 'x' OR v != 'y' OR v != 'z') THEN
-- the statements …Run Code Online (Sandbox Code Playgroud)language-agnostic if-statement multiple-languages control-flow
我正在编写一个脚本,我需要在几个地方使用文件测试的输出,包括shell函数内部.我想将文件存在分配给shell变量,如下所示:file_exists=[ -f $myfile ].
为了确保我已经覆盖了我的基础,我首先触摸一个文件,并测试它的存在:
file='a'
touch $file
if [ -f $file ]
then
echo "1 -- '$file' exists"
fi
Run Code Online (Sandbox Code Playgroud)
输出:
1 -- 'a' exists
Run Code Online (Sandbox Code Playgroud)
该文件已成功创建 - 没有惊喜,但至少我知道我没有处理任何权限问题或任何事情.
接下来我测试以确保我可以在变量中存储布尔表达式:
mytest=/bin/true
if $mytest
then
echo "2 -- \$mytest is true"
fi
Run Code Online (Sandbox Code Playgroud)
输出:
2 -- $mytest is true
Run Code Online (Sandbox Code Playgroud)
所以,我已经掌握了一些基本覆盖-条件表达式应该发出相同的输出/bin/true或/bin/false...但是这不是我所看到的:
mytest=[ -f $file ]
if $mytest
then
echo "3 -- \$mytest is true [expect true]"
else
echo "3 -- \$mytest is false [expect true]"
fi
Run Code Online (Sandbox Code Playgroud)
此操作失败,并显示以下错误:
-f: …Run Code Online (Sandbox Code Playgroud) 我想创建一些脚本来填充一些模板并将它们插入到我的项目文件夹中.我想为此使用shell脚本,模板非常小,所以我想将它们嵌入到shell脚本中.问题是echo似乎忽略了我的字符串中的换行符.要么是这样,要么字符串不包含开头的换行符.这是一个例子:
MY_STRING="
Hello, world! This
Is
A
Multi lined
String."
echo -e $MY_STRING
Run Code Online (Sandbox Code Playgroud)
这输出:
Hello, world! This Is A Multi lined String.
我假设echo是罪魁祸首.我怎样才能让它确认换行符?
我写这个是为了找到字符串的长度,但它没有显示字符串的长度.
我写的东西有问题吗?我只是bash的初学者.
Str=abcdefghj
echo "Str is:" `expr length $Str` "characters long"
Run Code Online (Sandbox Code Playgroud) 我正在尝试根据提交源自的分支为我的 GitLab Runner 设置一个环境变量。
我有 4 个 kubernetes 集群:staging、integration、production 和 qa。本质上,我想根据我推送到的分支将我的应用程序部署到正确的集群。
image: google/cloud-sdk:latest
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
services:
- docker:dind
before_script:
- docker info
stages:
- publish
publish:
stage: publish
script:
- if [ "$CI_COMMIT_REF_NAME" = "master" ]; then $ENVIRONMENT="production"; else $ENVIRONMENT="$CI_COMMIT_REF_NAME"; fi
- echo $ENVIRONMENT
.
.
.
- kubectl apply -f cfg/${ENVIRONMENT}/web-deployment.yaml
only:
- master
- integration
- qa
- staging
Run Code Online (Sandbox Code Playgroud)
每当我使用不同形式的 if 语句运行脚本时,都会出现以下错误:
/bin/bash: line 83: =integration: command not found
ERROR: Job failed: exit code 1 …Run Code Online (Sandbox Code Playgroud) 我尝试在远程linux机器上安装没有root的Python 2.7.我跑了命令
./configure prefix=/
make install DESTDIR=/xxx/yyy/
Run Code Online (Sandbox Code Playgroud)
其中/ xxx/yyy /是我具有读写访问权限的目录.
我最后碰到了一个问题.它说:
使用gdbm INFO构建dbm:找不到Tcl/Tk库和/或头文件
Python构建完成,但找不到构建这些模块的必要位:_tkinter bsddb185 dl imageop sunaudiodev要查找必要的位,请在detect_modules()中的setup.py中查找模块的名称.
运行build_scripts运行install_lib创建/lib/python2.7错误:无法创建'/lib/python2.7':权限被拒绝
我是否在没有root访问权限的情况下安装了正确的步骤?(即我的configure和make命令?)任何人都可以告诉我为什么它不能正确安装?
谢谢,
ktm
我想在两个值之间插入数字,否则重复脚本直到正确的数字.
这是我的脚本,它无法正常工作:
validation(){
read number
if [ $number -ge 2 && $number -ls 5 ]; then
echo "valid number"
break
else
echo "not valid number, try again"
fi
}
echo "insert number"
validation
echo "your number is" $number
Run Code Online (Sandbox Code Playgroud) 我使用 bash 的时间不超过 6 个小时,现在我正在尝试创建一个菜单,让您可以做一些“有趣”的事情:D。
我的问题是if 语句检查您是否处于 sudo 模式。我想有3个条件:
2)
if [ "$EUID" -ne 1 ]
then
echo "Checking if you are in sudo mode..."
echo "Error, please insert your password:"
sudo ls /root
if [ "$EUID" -ne 1 ]
then
echo -e "\nCould not authenticate the user."
echo -e "For security reasons the application will be closed."
exit
else
echo "==============================================================="
echo -e "ALL …Run Code Online (Sandbox Code Playgroud) 我正试图以printf这种方式打印多行字符串
printf "hi\n"
printf "next line here\n"
Run Code Online (Sandbox Code Playgroud)
我做不到以下事情
text_content="
hi
next line here
"
printf $text_content
Run Code Online (Sandbox Code Playgroud)
还有其他方法吗?
在 Bash 脚本中将字符串内容放在引号中是否重要?考虑以下两个变量:
str1=hei
str2="Hi"
Run Code Online (Sandbox Code Playgroud)
bash 中首选上述哪种定义字符串文字的方法?为什么?