Dưới bấu víu, có một số bashisms:
Các tr
lệnh có thể được thay thế bằng //
bashism :
COMMAND=$'\nREBOOT\r \n'
echo "|${COMMAND}|"
|
OOT
|
echo "|${COMMAND//[$'\t\r\n']}|"
|REBOOT |
echo "|${COMMAND//[$'\t\r\n ']}|"
|REBOOT|
Xem Mở rộng thông số và BÁO GIÁ trong trang người đàn ông của bash:
man -Pless\ +/\/pattern bash
man -Pless\ +/\\\'string\\\' bash
man -Pless\ +/^\\\ *Parameter\\\ Exp bash
man -Pless\ +/^\\\ *QUOTING bash
Thêm nữa...
Theo yêu cầu của @AlexJordan, điều này sẽ chặn tất cả các ký tự được chỉ định. Vì vậy, điều gì xảy ra nếu $COMMAND
có chứa khoảng trắng ...
COMMAND=$' \n RE BOOT \r \n'
echo "|$COMMAND|"
|
BOOT
|
CLEANED=${COMMAND//[$'\t\r\n']}
echo "|$CLEANED|"
| RE BOOT |
shopt -q extglob || { echo "Set shell option 'extglob' on.";shopt -s extglob;}
CLEANED=${CLEANED%%*( )}
echo "|$CLEANED|"
| RE BOOT|
CLEANED=${CLEANED##*( )}
echo "|$CLEANED|"
|RE BOOT|
Ngắn gọn:
COMMAND=$' \n RE BOOT \r \n'
CLEANED=${COMMAND//[$'\t\r\n']} && CLEANED=${CLEANED%%*( )}
echo "|${CLEANED##*( )}|"
|RE BOOT|
Ghi chú: bấu víucó extglob
tùy chọn được bật ( shopt -s extglob
) để sử dụng *(...)
cú pháp.