我有以下服务文件。
[Unit]
Description=Airflow celery worker daemon
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
EnvironmentFile=-/etc/sysconfig/airflow
User=airflow
Group=airflow
Type=simple
Restart=on-failure
RestartSec=10s
ExecStart=/usr/local/bin/airflow worker -q Test
我想提取“测试”表单文件,它总是在ExecStart=/usr/local/bin/airflow worker -q
. 它可以是任何东西,而不仅仅是“测试”。
我有以下代码:
file="file path"
while IFS= read line
do
# display $line or do somthing with $line
echo "$line"
if [ "$line" = *"ExecStart"* ]; then
echo "It's there!"
fi
done <"$file"
但是,我不能echo It's there
。如果有人可以指导它在变量中提取“测试”,那么我可以使用以下命令转储到 psql 中,这将是很大的帮助。
sql -U postgres -d database_name -c "SELECT c_defaults FROM user_info WHERE c_uid = 'Test'"
如果您不介意使用awk
代替纯 Bash,这可能非常简单:
awk '/^ExecStart=/ { print $NF; exit }' /path/to/input
您可以通过包装将其保存在变量中$(...)
:
word=$(awk '/^ExecStart=/ { print $NF; exit }' /path/to/input)
然后你可以将它嵌入到 SQL 命令中:
sql -U postgres -d database_name -c "SELECT c_defaults FROM user_info WHERE c_uid = '$word'"
或纯 Bash 解决方案:
read_word() {
while read line; do
[[ "$line" == ExecStart=* ]] || continue
echo ${line//* }
return
done < /path/to/input
}
word=$(read_word)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句