我已经编写了一个脚本来执行容器中PHP服务的自动更新。在某个阶段,我检查新的PHP版本是否使用以下命令激活:
echo ''| update-alternatives --config php | grep $version | grep auto | head -n 1 | tr -d ' \n\r\t '开始时的“回声”取消了“更新-替代”命令中的交互。
$version变量是来自用户的输入(OPTARG),如果没有设置,则具有默认值。
当im试图将命令输出保存到变量时,变量在执行命令后总是被设置为null。我尝试过以下几种方法:
var=$(echo ''| update-alternatives --config php | grep $version | grep auto | head -n 1 | tr -d ' \n\r\t ')以及:
var=`echo ''| update-alternatives --config php | grep $version | grep auto | head -n 1 | tr -d ' \n\r\t '`当im不将输出重定向到变量时,命令的结果是:
0/usr/bin/php8.181automode请帮帮忙
发布于 2022-10-23 17:56:02
您需要逐个检查失败的命令。
(注意:我的系统只安装了一个版本的php,因此用vi代替了下面的示例。)
命令
echo '' | update-alternatives --config vi | grep gtk3 | grep auto报告
{*} 0 /usr/bin/vim.gtk3 50 auto mode所以..。我建议您的编码不考虑报告选择的格式。
而不是tr,使用
awk '{ for( i=1 ; i < $NF ; i++){ if( index($i,"/") == 1 ){ print $i ; exit } ; } ; }'https://stackoverflow.com/questions/74169888
复制相似问题