将 echo 命令的结果保存在 shell 脚本中?
Saving the result of an echo command in a shell script?
我正在尝试将 echo 命令的结果存储为要在 shell 脚本中使用的变量。 Debian 4.19.0-6-amd64
该命令在终端中有效:echo $HOSTNAME
returns debian-base
,正确的主机名。
我尝试在 shell 脚本中 运行 它,例如:
#!/usr/bin/bash
CURRENT_HOSTNAME=`echo $HOSTNAME`
echo $CURRENT_HOSTNAME
我试过扩展:
CURRENT_HOSTNAME=$(echo $HOSTNAME)
为了覆盖更多的基础,我尝试了类似的东西:
CURRENT_HOSTNAME=$HOSTNAME
# or
CURRENT_HOSTNAME="$HOSTNAME"
# also, in case a problem with reserved names:
test=$HOSTNAME
test="$HOSTNAME"
在终端中运行良好!输出如下:
root@debian-base:/scripts# echo $HOSTNAME
debian-base
root@debian-base:/scripts# TEST_HOSTNAME=$HOSTNAME
root@debian-base:/scripts# echo $TEST_HOSTNAME
debian-base
root@debian-base:/scripts# TEST_TWO_HOSTNAME=$(echo $HOSTNAME)
root@debian-base:/scripts# echo $TEST_TWO_HOSTNAME
debian-base
一旦我 运行 脚本(如上):
root@debian-base:/scripts# sh test.sh
root@debian-base:/scripts#
我做错了什么?
您正在使用 bash
作为您的终端。 Bash 设置了变量 $HOSTNAME
。您 运行 您的脚本 sh
。 sh
没有 $HOSTNAME
.
选项:
bash test.sh
或运行它作为一个程序:
chmod +x test.sh
./test.sh
但我认为您需要将第一行更改为:
#!/bin/bash
因为我不认为 bash 在大多数情况下安装在 /usr/bin
中。但你需要尝试。要找出 bash 的安装位置,请使用 which bash
另一种选择是使用 hostname
二进制文件:
CURRENT_HOSTNAME=$(hostname)
echo $CURRENT_HOSTNAME
在 bash 和 sh.
中都有效
您只需运行宁sh
就可以开始sh
。你会看到它有一个类似 bash 的终端。你可以试试echo $HOSTNAME
。它不会显示,因为它不存在。您可以使用 set
查看那里的所有变量(因为 sh
没有制表符补全,所以更难弄清楚)。
我正在尝试将 echo 命令的结果存储为要在 shell 脚本中使用的变量。 Debian 4.19.0-6-amd64
该命令在终端中有效:echo $HOSTNAME
returns debian-base
,正确的主机名。
我尝试在 shell 脚本中 运行 它,例如:
#!/usr/bin/bash
CURRENT_HOSTNAME=`echo $HOSTNAME`
echo $CURRENT_HOSTNAME
我试过扩展:
CURRENT_HOSTNAME=$(echo $HOSTNAME)
为了覆盖更多的基础,我尝试了类似的东西:
CURRENT_HOSTNAME=$HOSTNAME
# or
CURRENT_HOSTNAME="$HOSTNAME"
# also, in case a problem with reserved names:
test=$HOSTNAME
test="$HOSTNAME"
在终端中运行良好!输出如下:
root@debian-base:/scripts# echo $HOSTNAME
debian-base
root@debian-base:/scripts# TEST_HOSTNAME=$HOSTNAME
root@debian-base:/scripts# echo $TEST_HOSTNAME
debian-base
root@debian-base:/scripts# TEST_TWO_HOSTNAME=$(echo $HOSTNAME)
root@debian-base:/scripts# echo $TEST_TWO_HOSTNAME
debian-base
一旦我 运行 脚本(如上):
root@debian-base:/scripts# sh test.sh
root@debian-base:/scripts#
我做错了什么?
您正在使用 bash
作为您的终端。 Bash 设置了变量 $HOSTNAME
。您 运行 您的脚本 sh
。 sh
没有 $HOSTNAME
.
选项:
bash test.sh
或运行它作为一个程序:
chmod +x test.sh
./test.sh
但我认为您需要将第一行更改为:
#!/bin/bash
因为我不认为 bash 在大多数情况下安装在 /usr/bin
中。但你需要尝试。要找出 bash 的安装位置,请使用 which bash
另一种选择是使用 hostname
二进制文件:
CURRENT_HOSTNAME=$(hostname)
echo $CURRENT_HOSTNAME
在 bash 和 sh.
中都有效您只需运行宁sh
就可以开始sh
。你会看到它有一个类似 bash 的终端。你可以试试echo $HOSTNAME
。它不会显示,因为它不存在。您可以使用 set
查看那里的所有变量(因为 sh
没有制表符补全,所以更难弄清楚)。