La entrada del usuario asignada a la variable en AppleScript luego se pasa al comando "hacer shell script"

2

¿Cómo puedo obtener información del usuario en AppleScript y luego pasar el resultado de la variable a un comando do shell script desde el propio AppleScript?

Por ejemplo, el usuario escribiría la respuesta foo en el siguiente cuadro de diálogo:

display dialog "Please enter your username" default answer ""
set the userID to the text returned of the result
do shell script "rm -rf /Users/$userID/.Trash/*" with administrator privileges

Entonces, en este caso, si incorporara la respuesta de foo en lugar de $userID , se leería lo siguiente cuando ejecute el comando:

display dialog "Please enter your username" default answer ""
set the userID to the text returned of the result
do shell script "rm -rf /Users/foo/.Trash/*" with administrator privileges

¿Cómo puedo pasar esa variable que tomé antes, en este caso sería $ userID e incorporarla a la mitad de la llamada shell script que he hecho justo arriba?

    
pregunta Danijel-James W 27.10.2013 - 15:04

2 respuestas

2

Esto asigna el nombre ingresado a la variable answer .

display dialog "What's your name?" default answer ""
set answer to text returned of result
display dialog "Your name is " & answer
    
respondido por el khowl 27.10.2013 - 15:21
1

Necesita la concatenación de cadenas (el operador & ) para combinar las partes "fijas" de su cadena con la parte variable. También debe usar el comando quoted form of para asegurarse de que todas las entradas del usuario se manejen de manera segura (es decir, espacios, comodines, caracteres de comillas y otros caracteres que el shell trata especialmente; ninguno de estos está en un "nombre de usuario corto" pero siempre es una buena idea manejar las cosas de manera segura):

display dialog "Please enter your username" default answer ""
set the userID to the text returned of the result
do shell script "rm -rf /Users/"& quoted form of userID & "/.Trash/*" with administrator privileges

También puede pasar el resto del nombre de ruta a través de quoted form of , pero no debe incluir el comodín:

… "rm -rf " & quoted form of ("/Users/"& userID & "/.Trash/") & "*" …
    
respondido por el Chris Johnsen 28.10.2013 - 07:56

Lea otras preguntas en las etiquetas