标签: variable

如何输出建议供用户接受并用作输入?

我该怎么做才能将光标留在 Bash 脚本中建议的同一行?

Bash 版本 = 3.2.51

它的目的是建议一个字符串,以便用户只需按 Enter。

#!/bin/sh
echo "@@@@@@@@@@
@ Enter the new plarform name [for example: our-platform-7.26-2.17-res4]:
@@@@@@@@@@"
echo "our-platform-7.26-2.17-res4"
read SuggestDefaultPlatform

echo "Stored name: " ${SuggestDefaultPlatform}
Run Code Online (Sandbox Code Playgroud)

这提示:

@@@@@@@@@@
@ Enter the new plarform name [for example: our-platform-7.26-2.17-res4]:
@@@@@@@@@@ 
our-platform-7.26-2.17-res4
_
Run Code Online (Sandbox Code Playgroud)

其中下划线“ _”代表光标。

我不想使用“Y/n”逻辑解决方法,将默认值分配给“ SuggestDefaultPlatform”变量

SuggestDefaultPlatform='our-platform-7.26-2.17-res4';
Run Code Online (Sandbox Code Playgroud)

然后提示一个问题,如:

Are you okay with `'our-platform-7.26-2.17-res4'` as your platform name? [Y/n]...
Run Code Online (Sandbox Code Playgroud)

相反,用户可能只想更改提示建议的几位数字,然后按 Enter。请参阅下面_SuggestDefaultPlatform”变量末尾的光标“ ” :

@@@@@@@@@@
@ Enter the new plarform name [for example: …
Run Code Online (Sandbox Code Playgroud)

bash prompt variable

6
推荐指数
2
解决办法
5857
查看次数

shell 脚本中的 ifconfig -a

我正在编写一个 shell 脚本来在启动时在我的虚拟机中启动我的网络,因为由于某种原因它不会立即使用虚拟机的快照执行此操作。

由于eth设备以停机状态启动,因此我必须使用以下脚本获取该设备名称,然后也启动设备:

gateway=ifconfig -a | awk '/eth/ {print $1}'
dhclient $gateway
Run Code Online (Sandbox Code Playgroud)

但是我不断收到以下错误,line 1: -a: command not found. ifconfig -a然而从命令行工作。

有没有办法ifconfig -a在我的 shell 脚本中工作?

shell-script output variable

6
推荐指数
1
解决办法
6994
查看次数

变量未在另一个变量 bash 内扩展

我正在 bash 脚本中读取一个 csv 文件,如下所示:

resource='/data/bscs/'
while IFS='|'read seqid fname fpath 
do
    echo "FILENO:         $seqid"
    echo "FILENAME:       $fname"
    echo "FILE_PATH:    $fpath"                    
done < "report.csv"
Run Code Online (Sandbox Code Playgroud)

我的 csv 文件具有以下值:

3|sample1.txt|$资源/操作/

我希望 $resource 在 $fname 内扩展。相反,我得到了这个输出:

FILENO:         3
FILENAME:       sample1.txt
SOURCE PATH:    $resource/operation
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

"${fpath}" $(echo $fpath)

我怎样才能做到这一点?

bash shell-script variable-substitution variable

6
推荐指数
1
解决办法
2万
查看次数

Bash - 将颜色代码存储在变量中

如何将彩色文本存储在变量中并稍后用颜色打印?

我从来没有在 100 次搜索中看到这个问题的答案,这都是关于 PS1 提示、内联 printf 或使用来自 ls --color 的数据。我需要自己将颜色添加到变量中,并在稍后打印彩色。

name="Hello"
name=$name"\e[36m\(Test\)\e[0m"
echo $name
printf $name
Run Code Online (Sandbox Code Playgroud)

我从中得到的输出是:

Hello \e[36m(Test)\e0m
Run Code Online (Sandbox Code Playgroud)

它不会根据变量中的数据着色。
我们如何将颜色代码存储在变量中以便稍后打印
谢谢
Jaeden "Sifo Dyas" al'Raec Ruiner

colors bash variable

6
推荐指数
1
解决办法
4781
查看次数

为什么更改 $PATH 会影响子 shell,而更改 $foo 不会?

$ unset foo
$ unset bar
$ echo $foo

$ echo $bar

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$ foo=a
$ bar=b
$ export bar
$ echo $foo
a
$ echo $bar
b
$ PATH=
$ echo $PATH

$ /bin/bash
bash: lesspipe: No such file or directory
bash: dircolors: No such file or directory
bash: ls: No such file or directory
$ echo $foo

$ echo $bar
b
$ echo $PATH

$
Run Code Online (Sandbox Code Playgroud)

正如我们所看到的,更改$PATH会影响子shell,而另一个变量需要被export编辑。为什么?

shell path environment-variables variable

6
推荐指数
1
解决办法
868
查看次数

使用 here-document 从 Bash 脚本创建脚本;为什么我的变量被替换了?

我在从主脚本创建脚本时遇到问题:

就这么简单:

cat  pippo << EOF
LOGFILE=test.log    
echo '#############################' >> $LOGFILE
EOF
Run Code Online (Sandbox Code Playgroud)

. 但是,当我检查 pippo 时,我得到:

LOGFILE=test.log
echo '#############################' >>
EOF
Run Code Online (Sandbox Code Playgroud)

为什么 $LOGFILE 已被替换?

bash here-document variable

6
推荐指数
1
解决办法
1541
查看次数

从环境变量中提取子字符串

在 bash 或 zsh 脚本中,如果后者在环境变量中,我如何从 url 中提取主机,例如unix.stackexchange.comfrom http://unix.stackexchange.com/questions/ask

url string shell-script variable

6
推荐指数
2
解决办法
4831
查看次数

.profile 什么时候执行?

我正在安装一个应用程序,但无法理解为什么安装指南告诉要向export其中一个启动文件添加命令。我没有看到它何时执行。那是一行:

export WORKON_HOME=$HOME/.virtualenvs
Run Code Online (Sandbox Code Playgroud)

我在终端中执行了一些代码,发现该export命令不起作用。为什么?

root@localhost:/home/gameboy# echo export ADAM=Boss>>/home/pythontest/.profile
root@localhost:/home/gameboy# tail /home/pythontest/.profile
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
export ADAM=Boss
root@localhost:/home/gameboy# su pythontest
pythontest@localhost:/home/gameboy$ echo $ADAM

pythontest@localhost:/home/gameboy$ 
Run Code Online (Sandbox Code Playgroud)

startup bash debian variable

6
推荐指数
1
解决办法
8495
查看次数

bash + 通过 bash 脚本从文件中读取变量和值

我有以下文件变量和值

# more file.txt
export worker01="sdg sdh sdi sdj sdk"
export worker02="sdg sdh sdi sdj sdm"
export worker03="sdg sdh sdi sdj sdf"
Run Code Online (Sandbox Code Playgroud)

我执行 source 以读取变量

# source file.txt
Run Code Online (Sandbox Code Playgroud)

example:

echo $worker01
sdg sdh sdi sdj sdk
Run Code Online (Sandbox Code Playgroud)

until now every thing is perfect

but now I want to read the variables from the file and print the values by simple bash loop I will read the second field and try to print value of the variable

#  for i in ` …
Run Code Online (Sandbox Code Playgroud)

linux bash shell-script variable eval

6
推荐指数
1
解决办法
4万
查看次数

如何使用 sed 在文件开头附加存储在 shell 变量中的文本?

我在这里找到了有趣的讨论并尝试了给出的解决方案 sed

如何在文件开头插入文本?

/sf/answers/667361551/

它适用于普通文本,但不适用于将文本保存在变量中时。

wolf@linux:~$ cat file.txt 
1
2
3
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

将文本 ( <added text>)添加到文件的开头

wolf@linux:~$ sed -i '1s/^/<added text>\n/' file.txt
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

有用!

wolf@linux:~$ cat file.txt 
<added text>
1
2
3
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

但是,当我用变量尝试它时,它不再起作用。

wolf@linux:~$ var='Text 1'
wolf@linux:~$ echo $var
Text 1
wolf@linux:~$ 

wolf@linux:~$ cat file.txt 
1
2
3
wolf@linux:~$ sed -i '1s/^/"$var"\n/' file.txt
wolf@linux:~$ cat file.txt 
"$var"
1
2
3
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

而不是"$var",我如何调用$varinsed命令的实际值?我使用 GNU sed4.7:

sed (GNU sed) 4.7 Packaged by Debian …
Run Code Online (Sandbox Code Playgroud)

bash sed variable

5
推荐指数
1
解决办法
270
查看次数