Debian システムでは bash を使用してください。
bash --version
GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
alias
関数内に1つを定義しました。このエイリアスを使用してログファイルに書き込みます。許可されていないユーザーとしてこのコマンドを実行しているので、これを実行するためにteeを使用しています。エイリアスが見つかりません。
私は得る:
./test.sh
Preparing Environment...
/tmp/support/20200525_074655
./test.sh: line 19: WRITE_LOG: command not found
./test.sh: line 20: ifconfig: command not found
./test.sh: line 20: WRITE_LOG: command not found
テストファイル
#!/bin/bash
function prepare_environment() {
echo "Preparing Environment..."
TICKET_ID=$(date '+%Y%m%d_%H%M%S')
LOG_LOCATION=/tmp/support/"${TICKET_ID}"
sudo mkdir -p "${LOG_LOCATION}"
echo "${LOG_LOCATION}"
alias WRITE_LOG='sudo tee -a "${LOG_LOCATION}"/report.log > /dev/null'
}
function write_log() {
sudo tee -a "${LOG_LOCATION}"/report.log > /dev/null
}
function collect_information() {
echo "Current Report time: $(date '+%Y/%m/%d %H:%M.%S')" | WRITE_LOG
ifconfig | WRITE_LOG
}
prepare_environment
echo "Current Report time: $(date '+%Y/%m/%d %H:%M.%S')" | write_log
collect_information
代替:
sudo command > file.log
よりきれいなアプローチですが、これを行うのではなく、さまざまなコマンドを使用します。- 私はできます。
sudo command | write_log
似たような質問
答え1
デフォルトでは、Bashは対話型の場合にのみスクリプトのエイリアスを拡張しません。。
エイリアス拡張を有効にできますが、役に立たない。この機能を使用してください。
の場合、ifconfig
権限のないユーザーとして情報を取得できますが、システム構成を変更することはできません。多くのディストリビューションでは、PATH
権限のないユーザーにこれを入れません。スクリプトsbin
にディレクトリを追加します。PATH
PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH