echo $var命令可以很容易地调用bash中变量的值,如下所示
user@linux:~$ a=1; b=2; c=a+b
user@linux:~$ echo $a $b $c
1 2 a+b
user@linux:~$
我想要实现的是用x中的实际值替换a,b,c
user@linux:~$ a=1; b=2; c=a+b
user@linux:~$ for i in a b c; do echo "$i = x"; done
a = x
b = x
c = x
user@linux:~$
通过使用类似的for循环,我希望能得到这样的输出
a = 1
b = 2
c
我有一个简单的脚本如下。
names=("windows" "ubuntu" "raspbian" "debian" "kali linux")
echo "names array length: ${#names[@]}"
for n in ${names[@]}; do
echo $n
done
我的意图和希望是:
names array length: 5
windows
ubuntu
raspbian
debian
kali linux
但结果却是:
names array len
紧随其后
https://stackoverflow.com/questions/1809899/how-can-i-assign-the-output-of-a-function-to-a-variable-using-bash和如何将命令的输出分配给变量?
我写
function getos(){
# http://stackoverflow.com/a/27776822/1637673
case "$(uname -s)" in
Darwin)
OS='mac'
;;
Linu
我正试图在我的.zshrc中进行操作系统检查。在Ubuntu上运行时,我无法获得与Ubuntu的字符串比较的正确匹配。
片段:
function get_linux_distro()
{
echo `awk -F= '/^NAME/{print $2}' /etc/os-release`
}
function is_os_ubuntu()
{
set -x
local dist=`get_linux_distro`
if [[ ${dist} = "Ubuntu"* ]]; then # <<< string
使用regexp字符串,如何删除包含匹配的第一行之前的所有行?例如,我如何才能改变这一点:
lost
load
linux
loan
linux
这方面:
linux
loan
linux
我试过:
echo "lost
load
linux
loan
linux" | sed -e 's/.*^li.*$//g'
但是它返回这个,而不是改变任何东西:
lost
load
linux
loan
linux
我想让它工作,这样当没有匹配的时候,它就不会输出任何东西。
如果我是在Linux终端中,并且开始设置变量,比如导出AGE=45。
然后我有一个脚本来读取终端变量中的用户数据并对其进行处理,这有可能吗?
IE:
user@linux$ export AGE=45
user@linux$ ./age.sh
#script asks for input
read -p "what is your age?" scriptAGE
#user inputs variable set in terminal
$AGE
#回波输出
echo "your age is: " $scriptAGE"
#应该说你的年龄
我想在特定单词之间打印完整的文本。这是我的要求。
"123.log“包含以下文本。
EBSPRODSTART
web logic server
Oracle database administration
Linux operating system
EBSPRODEND
输出应为:-
web logic server
Oracle database administration
Linux operating system
简介:-
上面的"EBSPROD“是数据库名称。该值将是一个输入参数。例如:
$ DBNAME=EBSPROD
$ echo $DBNAME
EBSPRO
在bash脚本中
if [ 1 ]
then
echo "Yes"
else
echo "No"
fi
输出:Yes
它表示“1”被视为真值。
但在代码中:
word = Linux
letter = nuxi
if echo "$word" | grep -q "$letter"
then
echo "Yes"
else
echo "No"
fi
输出:No
但是echo "$word" | grep -q "$letter"将返回1,那
我在shell中尝试使用下面的代码进行参数扩展
#!/bin/sh
count
echo ${count:-60}
echo ${count:=120}
echo $count
echo ${count:+80}
x = 'The host name is google'
echo ${#x}
输出
./test_varexp.sh: line 2: count: command not found
60
120
120
80
./test_varexp.sh: line 7: x: command not found
0
与上述代码和输出在上下文中,我有以下问题;
带有&
我每周日晚上在我的Linux PC上运行一个使用cron job的脚本。当我以root用户身份登录时,我希望显示最后一次脚本执行的输出。
这是一个脚本msg.sh
#!/bin/bash
if [ -e /user/script/$start.sh ]
then
echo " starting service "
else
echo " service not started "
echo " Please check the start.sh file or manually start the service "
fi
我将主机名和用户定义为环境变量(Linux )
echo $USER
pvicente
echo $HOSTNAME
glace
我在CMakeLists.txt中使用
message("-- USER environment variable is set to: " $ENV{USER})
message("-- HOSTNAME environment variable is set to: " $ENV{HOSTNAME})
但是检测到了用户,而不是主机名。
输出是
-- USER environment variable is set to: pvic
在Ubuntu中使用echo(我是Linux或Unix之类的新手)。这是我想要作为echo的输出的内容
class=1,id=1 class=2,id=2 and so on till... class=100,id=100
所以我这样做了:echo class={1..100},id={1..100}我知道我必须使用{1..100},但问题是我得到了class=1,id=1(这没问题),然后是class=1,id=2(我理解为什么会发生这种情况,但我希望这个类等于id),所以谁能告诉我如何获得输出呢?(见第3至6行)