[英]How do I detect the number of keyboards in OSX through command line using bash?
[英]How do I run a command in a list of directories using bash?
除了“ Shared”和我們的本地管理員帳戶,我需要在OS X用戶目錄中運行一些命令。 到目前為止,我有:
#!/bin/bash
userFolders=$(find /Users/ -type d -depth 1 | sed -e 's/\/\//\//g' | egrep -v "support|Shared")
for PERSON in "$userFolders"; do
mkdir $PERSON/Desktop/flagFolderForLoop
done
以root身份運行以上命令,我得到
mkdir: /Users/mactest1: File exists
我哪里可能出問題了?
您應該刪除"$userFolders"
周圍的引號,以便您的循環正確地遍歷每個人。
下面的示例說明了引用與不引用之間的區別:
帶引號:
for i in "a b c"
do
echo "Param: $i"
done
僅輸出一個參數:
Param: a b c
不帶引號:
for i in a b c
do
echo "Param: $i"
done
打印每個參數:
Param: a
Param: b
Param: c
另外,您可以告訴find
排除某些目錄,例如:
for PERSON in $(find /Users/ -type d -depth 1 ! -name support ! -name Shared)
do
mkdir "$PERSON"/Desktop/flagFolderForLoop
done
可以使用dscl
列出(常規,標准) /Users
Mac OS X上的/Users
,而不是find
。
dscl . -list /Users NFSHomeDirectory
# list name of users
dscl . -list /Users NFSHomeDirectory |
awk '/^[^[:space:]]+[[:space:]]+\/Users\//{print $1}'
# list home directories of users
dscl . -list /Users NFSHomeDirectory |
awk '/^[^[:space:]]+[[:space:]]+\/Users\//{$1=""; sub(/^ */,""); print $0}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.