标签: variable

无法导出字符串变量

我正在尝试从 txt 文件中导出一些字符串变量。

文件.txt

ERROR_NOT_SUPPORTED_ARCH_MSG='错误:未知架构' ERROR_NOT_SUPPORTED_OS_V_MSG='错误:不支持的操作系统版本'

$ source file.txt
$ export $(cut -f 1 file.txt)
Run Code Online (Sandbox Code Playgroud)

我收到了类似的错误 -

出口:`arch'':不是一个有效的标识符

所以问题是是否可以导出带有空格的字符串变量?什么是正确的方法呢?

bash variable

0
推荐指数
1
解决办法
574
查看次数

BASH 变量名包含数字问题

使用带有数字的变量运行时遇到了一些麻烦..

这有效;

sourceid_2="blah"
echo $sourceid_2
Run Code Online (Sandbox Code Playgroud)

但这不起作用;

sourceid_2="blah"
i=2
echo $sourceid_$i
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这一问题?我试过没有下划线..但这没有帮助。

我的最终目标是在 for i in {2..7} 循环中对变量做一些事情......像这样;

for i in {2..7}
do
echo $sourceid_$i
done
Run Code Online (Sandbox Code Playgroud)

bash variable

0
推荐指数
1
解决办法
3818
查看次数

理解 $ 语法

我正在使用以下命令由用户输入并希望将其显示为3num15.

num --> 应该是用户输入的值。你能帮我语法吗?

echo "Enter the instance number of source system"
read num
Run Code Online (Sandbox Code Playgroud)

scripting variable

0
推荐指数
1
解决办法
71
查看次数

一行读取验证

我有这个read操作:

read -p "Please enter your name:" username
Run Code Online (Sandbox Code Playgroud)

如何在一行中验证用户名?

如果在一行中不可能以理智的方式实现,那么放在变量中的 Bash 函数可能是一个不错的解决方案?


Name 只是一个例子,它可以是密码或任何其他常见的表单值。

验证在这里的意思是:请求用户两次插入名称并确保两个值相同。

verification variable read

0
推荐指数
1
解决办法
68
查看次数

保持文件数据对 Bash 始终可用,无需重复执行(重启后也是如此)

我有一个名为的文件~/myScripts/assignments.sh,其中包含各种赋值,例如变量和别名。这是该文件的味道:

drt="/var/www/html"
rss="/etc/init.d/php*-fpm restart && systemctl restart nginx.service"

alias drt="cd ${drt}"
alias rss="${rss}"
Run Code Online (Sandbox Code Playgroud)

从我完成安装操作系统的那一刻起,我就经常使用这些作业,尤其是为我的网络服务器和相邻软件的安装、配置和维护编写更简洁的脚本。

因此,在任何 Bash 会话开始后(也在 a 之后),始终导出此文件至关重要,它的数据将始终在所有 Bash 会话中可用reboot

为了实现这一点,我想到了以下糟糕的脚本:

source ~/myScripts/assignments.sh # Immediate availability;
printf "\n%s" "source ~/myScripts/assignments.sh" >> ~/.profile
cat > "cron_daily.sh" <<< "source ~/myScripts/assignments.sh"

crontab <<-"CRONTAB"
    0 0 * * * ~/myScripts/cron_daily.sh # Permanent availability (after the one minute gap);
CRONTAB
Run Code Online (Sandbox Code Playgroud)

达到我上面描述的状态的好方法是什么?

更新

我认为要避免采购文件,然后source ~/myScripts/assignments.sh在 bash.bashrc 中添加的原因是我看到一些开发运营bash.bashrc人员一般不愿意采购。虽然,当文件不是自定义的,或者只有这么小的变化时,它通常不是问题。

command-line bash alias reboot variable

0
推荐指数
1
解决办法
85
查看次数

如何将 .* 作为值分配给 bash 中的变量

当我将 .* 分配给变量时,它正在分配所有隐藏文件。

[root@s1 ~]# a=".*"
[root@s1 ~]# echo $a
. .. .bash_history .bash_logout .bash_profile .bashrc .cache .config .cshrc .history .lesshst .mozilla .pki .rnd .ssh .tcshrc .viminfo .virsh .xauth6SHzeY .xauthhAVYfm .xauthI6Cte3 .xauthk7ea35 .xauthlXtiZ9 .Xauthority .xauthQm7mJ8 .xauthTpWbxP .xauthY9KsdC
Run Code Online (Sandbox Code Playgroud)

我期望以下输出:

.*

怎么解决,谢谢。

我在下面试过,它给出了输出

 [root@s1 ~]# a='".*"'
    [root@s1 ~]# echo $a
    ".*"
Run Code Online (Sandbox Code Playgroud)

“.*”

但不是

.*

bash variable

0
推荐指数
2
解决办法
278
查看次数

为什么在“while”循环中使用“读取变量”设置变量是全局的,而在使用“while 读取变量”设置时是局部变量?

unset myVariable i;
while [ -z "$i" ]; do
    read myVariable;
    echo "myVariable : '$myVariable'";
    i=foo;
done;
echo "myVariable : '$myVariable'"
Run Code Online (Sandbox Code Playgroud)

unset是否允许重播命令)

按任意键 + ENTER,你会得到:

myVariable : '[what you typed]'
myVariable : '[what you typed]'
Run Code Online (Sandbox Code Playgroud)

的值myVariable存在于while循环之外。现在尝试:

tmpFile=$(mktemp);
echo -e 'foo\nbar\nbaz' >> "$tmpFile"
while read myVariable; do
    otherVariable=whatever; 
    echo "myVariable : '$myVariable', otherVariable : '$otherVariable'";
done < "$tmpFile";
echo "myVariable : '$myVariable', otherVariable : '$otherVariable'";
rm "$tmpFile"
Run Code Online (Sandbox Code Playgroud)

你会得到 :

myVariable : 'foo', otherVariable : 'whatever' …
Run Code Online (Sandbox Code Playgroud)

bash shell-script variable

0
推荐指数
1
解决办法
1503
查看次数

如何从shell变量获取路径的文件名部分

shell 变量保存一个路径。如何获得它的文件名部分?

在bash(1)中,我试验了一下,发现用."${i/*\///}"where iis环境变量名就可以了。这种方法不仅难看,而且在路径不包含任何/字符的情况下也是错误的。

我将演示一个需要此类功能的实际案例。假设我们要为源目录中的每个 PDF 文件建立一个指向当前目录的符号链接。

$ for i in /source/path/*.pdf; do\
  ln -s "$i" ."${i/*\///}"; \
  done
Run Code Online (Sandbox Code Playgroud)

environment-variables filenames basename variable

0
推荐指数
1
解决办法
971
查看次数

Bash - 如何将数组放入变量值中?

我有一个 web.txt 文件,其中包含:

youtube
facebook
google
Run Code Online (Sandbox Code Playgroud)

我的 sh 文件包含:

readarray web < web.txt
url = www.website.com
Run Code Online (Sandbox Code Playgroud)

我使用过的命令:

readarray web < web.txt
url = www."$web".com

ping url
Run Code Online (Sandbox Code Playgroud)

预期输出:

ping youtube.com
ping facebook.com
ping google.com
Run Code Online (Sandbox Code Playgroud)

正确的语法应该是什么?谢谢!

shell array variable

0
推荐指数
1
解决办法
59
查看次数

变量未在 $() 内解析

我期待该变量url将被解析,$()但我得到的变量是urlhttp://testing.com ”而不是“ http://testing.com

url="http://testing.com"

echo "Fetching from ${url}"

some_var=$(python somePythonScript.py url)
Run Code Online (Sandbox Code Playgroud)

linux python variable

0
推荐指数
1
解决办法
113
查看次数